解析以制表符分隔的文本文件以用一个垂直列表替换列(Python)
我对Python非常陌生,我知道这是一个非常基本的问题。我有一个包含数据列的文本文件。我想删除这些列并使其成为一个长列表 我有以下代码:解析以制表符分隔的文本文件以用一个垂直列表替换列(Python),python,Python,我对Python非常陌生,我知道这是一个非常基本的问题。我有一个包含数据列的文本文件。我想删除这些列并使其成为一个长列表 我有以下代码: for line in open('feddocs_2011.txt', 'r'): segmentedLine = line.split("/t") print segmentedLine 这似乎为每一行创建了一个单独的字符串,但我认为我可能需要循环遍历这些新字符串中的每一个来拆分下一行。我想它会把标签后面的所有内容都放在一个新行上。我尝试
for line in open('feddocs_2011.txt', 'r'):
segmentedLine = line.split("/t")
print segmentedLine
这似乎为每一行创建了一个单独的字符串,但我认为我可能需要循环遍历这些新字符串中的每一个来拆分下一行。我想它会把标签后面的所有内容都放在一个新行上。我尝试了以下操作,但收到一条错误消息,“list”没有拆分函数
while segmentedLine:
item = segmentedLine.split("\t")
print item
非常感谢您的宝贵意见。关于:
x = [line.split('\t') for line in open('file.txt')]
如果需要,您可以加入列表:
sum(x, [])
[编辑]
如果您的文件只有选项卡(没有空格),您只需执行以下操作:
x = open('file.txt').read().split()
那么:
x = [line.split('\t') for line in open('file.txt')]
如果需要,您可以加入列表:
sum(x, [])
[编辑]
如果您的文件只有选项卡(没有空格),您只需执行以下操作:
x = open('file.txt').read().split()
你已经在第一个循环中正确地分割了线。然后,您要做的是让第二个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
你已经在第一个循环中正确地分割了线。然后,您要做的是让第二个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
如果我理解正确,你想要的是:
import itertools
print '\n'.join(list(itertools.chain(*[line.strip().split(',') for line in open('feddocs_2011.txt', 'r')])))
如果我理解正确,你想要的是:
import itertools
print '\n'.join(list(itertools.chain(*[line.strip().split(',') for line in open('feddocs_2011.txt', 'r')])))
将标签后面的所有内容放在新行上
如果这就是你想要的,为什么不直接使用这个函数呢
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)
将标签后面的所有内容放在新行上
如果这就是你想要的,为什么不直接使用这个函数呢
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)
你有吗
foo<tab>bar<tab>baz
bla<tab>bla<tab>bla
对吧?
那你就做吧
with open("myfile.txt", "r") as f:
text = f.read().replace("\t", "\n")
现在text
是一个字符串。如果您想要所有项目的列表([“foo”、“bar”、“baz”、“bla”、“bla”、“bla”、“bla”]
),请使用
你有吗
foo<tab>bar<tab>baz
bla<tab>bla<tab>bla
对吧?
那你就做吧
with open("myfile.txt", "r") as f:
text = f.read().replace("\t", "\n")
现在text
是一个字符串。如果您想要所有项目的列表([“foo”、“bar”、“baz”、“bla”、“bla”、“bla”、“bla”]
),请使用
你想做什么还不清楚。你能给出一些(小的)输入和输出样本吗?你想做什么还不清楚。你能给出一些(小的)输入和输出示例吗?我不知道文本的格式是如何确定的。。。如果他还想将数据转换为int或float,他不需要删除尾随符\n或\rusing
sum()
在很大程度上效率很低(O(n^2))lists@simon有时候越简单越好。。。我知道sum是用来计算数字的,但它对小列表很有效:)@JBernado——我想这取决于你在做什么,但我认为可能要避免慢12倍@simon Python可能比C。。。但我们仍然使用它!Sum很好,对于小列表来说可读性最好。我不知道文本的格式是否确定。。。如果他还想将数据转换为int或float,他不需要删除尾随符\n或\rusingsum()
在很大程度上效率很低(O(n^2))lists@simon有时候越简单越好。。。我知道sum是用来计算数字的,但它对小列表很有效:)@JBernado——我想这取决于你在做什么,但我认为可能要避免慢12倍@simon Python可能比C。。。但我们仍然使用它!Sum很好,对于小列表来说是最可读的。非常感谢-这很有效!感谢所有反应如此迅速的人!非常感谢-这很有效!感谢所有反应如此迅速的人!