индексировать несколько символов в списке

Я пытаюсь индексировать несколько символов, например, если список:

N00000035,Z,X,Y

Я хочу проиндексировать набор символов перед первой запятой:

N00000035

Вот код, который у меня есть до сих пор:

with open(filename+".txt", 'r') as f:
        for item in f:
            print(item[1,8])

Но это, кажется, не работает, когда я распечатываю «item[1,8]» — этот бит кода находится в пределах большего блока try/except, и он, кажется, идет прямо к блоку except, когда я выполняю код, который у меня есть выше, который говорит мне что-то о нем недопустимо.

Любая помощь ценится!

3 ответа

  1. Использовать splitв строке. Разделитель-запятая.

    >>> str = "N00000035,Z,X,Y"
    >>> str.split(',')[0]
    'N00000035'
    
  2. Сначала поместите данные в строку, а затем разделите строку, как показано ниже:

    >>> st = "N00000035,Z,X,Y"
    >>> splited = st.split(",")
    >>> splited
    ['N00000035', 'Z', 'X', 'Y']
    

    Тогда вы можете получить доступ к буквам, как показано ниже:

    >>> for i in splited[0]:
        print i
    
    
    N
    0
    0
    0
    0
    0
    0
    3
    5
    

    Вы также можете использовать индексацию, как показано ниже:

    >>> splited[0][0]
    'N'
    >>> splited[0][1]
    '0'
    >>> splited[0][2]
    '0'
    
  3. Во-первых, item[1, 8]неправильный синтаксис для получения первых 8 символов. Правильный синтаксисitem[1:8], или исправить эти числа, чтобы получить все до первой запятой, item[0:9]или просто item[:9]:

    >>> item[:9]
    'N00000035'
    

    Если ваши столбцы фиксированной ширины, этот подход будет работать хорошо, но в противном случае вы должны рассмотреть другие ответы и использовать item.split(',')[0]вместо этого, который является гораздо более гибким:

    >>> item.split(',')[0]
    'N00000035'