Я очень новичок в Python, и я знаю, что это довольно простой вопрос. У меня есть текстовый файл со столбцами данных. Я хочу удалить столбцы и сделать его одним длинным списком.
У меня есть следующий код:
for line in open('feddocs_2011.txt', 'r'):
segmentedLine = line.split("/t")
print segmentedLine
Кажется, что для каждой строки создается отдельная строка, но мне кажется, что мне может понадобиться прокрутить каждую из этих новых строк, чтобы разбить их на следующую. Я думал, что это положило бы все, что было бы за вкладкой на новой строке. Я попробовал следующее, но получил сообщение об ошибке, что "список" не имеет функции разделения.
while segmentedLine:
item = segmentedLine.split("\t")
print item
Большое спасибо за любой ввод.
В первом цикле вы правильно разделили строки. То, что вы хотите сделать, - это иметь второй цикл для итерации по каждому элементу tab-. Это будет выглядеть так:
for line in open('feddocs_2011.txt', 'r'):
segmentedLine = line.split("\t")
for item in segmentedLine:
print item
Или более кратко, без временной переменной:
for line in open('feddocs_2011.txt', 'r'):
for item in line.split("\t"):
print item
'\n'
из строк ...
как насчет:
x = [line.split('\t') for line in open('file.txt')]
и вы можете присоединиться к спискам, если хотите:
sum(x, [])
[изменить]
если ваш файл имеет только вкладки (без пробелов), которые вы можете просто сделать:
x = open('file.txt').read().split()
sum()
очень неэффективно (O (n ^ 2)) в больших списках
Итак, у вас есть
foo<tab>bar<tab>baz
bla<tab>bla<tab>bla
и вы хотите, чтобы он был
foo
bar
baz
bla
bla
bla
Right?
Тогда вы можете просто сделать
with open("myfile.txt", "r") as f:
text = f.read().replace("\t", "\n")
Теперь text
- это одна строка. Если вам нужен список всех элементов (["foo", "bar", "baz", "bla", "bla", "bla"]
), используйте
text = f.read().replace("\t", "\n").split("\n")
Если я правильно понял, что вам нужно:
import itertools
print '\n'.join(list(itertools.chain(*[line.strip().split(',') for line in open('feddocs_2011.txt', 'r')])))
поместите все, что следует за вкладкой в новой строке
Если это все, что вам нужно, почему бы просто не использовать функцию str.replace?
for line in open('feddocs_2011.txt', 'r'):
segemented_line = line.replace('\t', '\n')
print(segmented_line)
Если по какой-то причине вы хотите сохранить вкладки:
for line in open('feddocs_2011.txt', 'r'):
segemented_line = line.replace('\t', '\t\n')
print(segmented_line)