Удаление разделителей табуляции из текстового файла с помощью цикла for - PullRequest
0 голосов
/ 21 марта 2011

Для моего класса Python я работаю над открытием файла .tsv и собираю 15 строк данных, разбитых на 4 столбца, и превращаю их в списки для каждой строки.Для этого я должен удалить вкладки между столбцами.

Мне посоветовали использовать цикл for и проходить по каждой строке.Это имеет смысл, но я не могу понять, как удалить вкладки.

Любая помощь?

Ответы [ 4 ]

4 голосов
/ 21 марта 2011

Правильно, это должно быть сделано с использованием Python CSV модуля (как упомянуто в другом ответе), поскольку он будет обрабатывать экранированные разделители, значения в кавычках и т. Д.

В более общем смыслеэто можно сделать с помощью списка :

rows = [line.split('\t') for line in file]

И, как предлагается в комментариях, в некоторых случаях генераторное выражение будет лучшим выбором:

rows = (line.split('\t') for line in file)

См. Выражения генератора по сравнению со списком для обсуждения того, когда использовать каждое из них.

3 голосов
/ 21 марта 2011

Вы должны использовать Модуль Python stdlib csv , в частности, функцию csv.reader .

rows = [row for row in csv.reader(open('yourfile.tsv', 'rb'), delimiter='\t')]

Также есть параметр dialect, который может принимать excel-tab для соответствия формату Microsoft Excel с разделителями табуляции.

3 голосов
/ 21 марта 2011

Чтобы прочитать строки из файла и разбить каждую строку в разделителе табуляции, вы можете сделать это:

rows = []
for line in open('file.tsv', 'rb'):
    rows.append(line.strip().split('\t'))
1 голос
/ 21 марта 2011

Проверьте встроенные строковые функции .split() должен сделать работу.

>>> line = 'word1\tword2\tword3'
>>> line.split('\t')
['word1', 'word2', 'word3']
...