【发布时间】:2014-10-15 18:51:15
【问题描述】:
输入:
A B C
D E F
这个文件不是完全用制表符分隔的,有些条目是用空格分隔的,看起来像是用制表符分隔的(这很烦人)。我尝试使用规范的制表符分隔选项使用csv 模块读取文件,希望它不会介意几个空格(不用说,我的输出被这段代码搞砸了):
with open('file.txt') as f:
input = csv.reader(f, delimiter='\t')
for row in input:
print row
然后我尝试用csv.reader('\t'.join(f.split())) 替换第二行以尝试利用Remove whitespace in Python using string.whitespace,但我的错误是:AttributeError: 'file' object has no attribute 'split'。
我也尝试检查Can I import a CSV file and automatically infer the delimiter?,但这里的 OP 导入了分号分隔或逗号分隔的文件,但没有导入两种分隔符的随机混合文件。
想知道csv 模块是否可以处理混合各种分隔符的文件读取,或者我是否应该尝试不同的方法(例如,不使用csv 模块)?
我希望有一种方法可以读取混合分隔符的文件并自动将此文件转换为制表符分隔的文件。
【问题讨论】:
-
你的空格分隔线是否总是用相同数量的空格分隔?
-
我会说最好规范化你的文件然后处理它,而不是整天处理边缘情况。
-
我同意,但是如果文件有数百行长,我将如何对其进行规范化/处理?也许
csv模块有更好的替代方案? -
任何有引号的字段:
"A Dont break B"? -
@dawg:文件字段中没有引号。