解析制表符分隔的文本文件并用单列替换列(Python)
我刚开始学Python,知道这个问题很基础。我有一个文本文件,里面有几列数据。我想把这些列去掉,变成一长串的列表。
我写了以下代码:
for line in open('feddocs_2011.txt', 'r'):
segmentedLine = line.split("/t")
print segmentedLine
这段代码似乎为每一行创建了一个单独的字符串,但我觉得我可能需要遍历这些新字符串,然后再进行分割。我原以为它会把每个制表符后面的内容放到新的一行上。我尝试了以下方法,但出现了一个错误提示,说“列表”没有分割功能。
while segmentedLine:
item = segmentedLine.split("\t")
print item
非常感谢大家的帮助。
5 个回答
1
所以你有
foo<tab>bar<tab>baz
bla<tab>bla<tab>bla
而你想要的是
foo
bar
baz
bla
bla
bla
对吧?
那么你可以直接这样做
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")
2
那这个怎么样:
x = [line.split('\t') for line in open('file.txt')]
如果你想的话,可以把这些列表合并起来:
sum(x, [])
[编辑]
如果你的文件里只有制表符(没有空格),你可以简单地这样做:
x = open('file.txt').read().split()
5
你在第一个循环中已经把行分开了。接下来,你需要再用一个for循环来逐个处理每个用制表符分开的项目。这个循环看起来是这样的:
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