Вывести указанный столбец c из файла с разделителями табуляции в python - PullRequest
0 голосов
/ 10 марта 2020

Я начинающий с python. У меня есть файл с разделителями табуляции, и я хочу напечатать только 37-й столбец, который является последним столбцом. Но когда я запускаю этот код, все данные печатаются. мой код выглядит следующим образом:

dicts = {}
for i in open('Book2.txt'):
    split_i = i.split('\t')
    dicts[split_i[37]] = i.rstrip()
    print(i.rstrip())

Ответы [ 2 ]

0 голосов
/ 13 марта 2020

Списки в python имеют индекс с нулевым индексом . это означает, что первый элемент имеет индекс 0. Таким образом, для 37-го столбца это будет mylist[36]. Так как вам нужен последний столбец, существует ярлык mylist[-1], который всегда возвращает последний элемент списка.

for line in open('Book2.txt'):
    print(line.split('\t')[-1])

Понимание списка намного чище и более pythoni c подход к обработке простого for loop:

lines = open('Boot2.txt')
col = [line.split('\t')[-1].rstrip() for line in lines]
print("\n".join(col))
0 голосов
/ 10 марта 2020

В строке 4 rstrip () - это строковая функция, которая удаляет завершающие пробелы, а не захватывает последнее слово. Поскольку split () создал список из строки в предыдущей строке, вы можете использовать индексирование списка, например split_i [-1], чтобы индексировать самый правый элемент списка, или split_i [36], чтобы получить 37-е слева. Кроме того, это не может быть правильным использованием диктата. Попробуйте вместо этого создать список, например:

col_37 = []                        # Empty list instead of a dict
for line in open('Book2.txt'):     # Variable 'i' named more intuitively
    split_line = line.split('\t')  # Separate the string by tabs
    col_37.append(split_line[36])  # Add the item you want to your list
print(col_37)                      # Show the data you just got
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...