Python:使用多个拆分分隔符拆分文件

时间:2010-06-08 16:39:59

标签: python csv

我有多个CSV文件,我需要在循环中解析以收集信息。 问题是虽然它们是相同的格式,但有些由'\ t'分隔,其他由','分隔。 在此之后,我想删除字符串周围的双引号。

python可以通过多个可能的分隔符进行拆分吗?

此时,我可以使用以下方法将行拆分:

f = open(filename, "r")
fields = f.readlines()
for fs in fields:
    sf = fs.split('\t')
    tf = [fi.strip ('"') for fi in sf]

2 个答案:

答案 0 :(得分:14)

像这样拆分文件不是一个好主意:如果其中一个字段中有逗号,它将失败。例如(对于制表符分隔的文件):行"field1"\t"Hello, world"\t"field3"将分为4个字段而不是3个。

相反,您应该使用csv模块。它包含有用的Sniffer类,可以检测文件中使用的分隔符。 csv模块也会删除双引号。

import csv

csvfile = open("example.csv")
dialect = csv.Sniffer().sniff(csvfile.read(1024))
csvfile.seek(0)
reader = csv.reader(csvfile, dialect)

for line in reader:
    #process line

答案 1 :(得分:2)

您可以使用正则表达式(可选编译)执行此操作:

sf = re.split(r'[,\t]', fs)

这不包括例如制表符分隔字段中的逗号。我会看看csv模块是否有用。