Я пытаюсь разобрать файл, разделенный табуляцией, в Python, где число, помещенное k табуляций отдельно от начала строки, должно быть помещено в k-й массив.
Есть ли встроенная функция для этого или лучший способ, кроме чтения строки за строкой и выполнения всей очевидной обработки, которую будет выполнять наивное решение?
иногда легко забыть, но принято принимать ответ на свой вопрос.. Scott Prive 21.06.2017
@Боб, не оставляй нас в покое. ruipacheco 18.10.2017
Вы можете использовать модуль csv для простого анализа файлов значений, разделенных табуляцией.
import csv
with open("tab-separated-values") as tsv:
for line in csv.reader(tsv, dialect="excel-tab"): #You can also use delimiter="\t" rather than giving a dialect.
...
Где line - это список значений в текущей строке для каждой итерации.
Изменить: как предложено ниже, если вы хотите читать по столбцу, а не по строке, лучше всего использовать встроенную функцию zip():
with open("tab-separated-values") as tsv:
for column in zip(*[line for line in csv.reader(tsv, dialect="excel-tab")]):
...
Ответ 2 · рейтинг 14 · martineau
Я не думаю, что какой-либо из текущих ответов действительно делает то, что вы сказали, что хотите. (Исправление: теперь я вижу, что @Gareth Latty / @Lattyware включил мой ответ в свой собственный как "Редактировать" ближе к концу.)
Во всяком случае, вот мое мнение:
Скажем, это значения, разделенные табуляцией, в вашем входном файле: