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

2 投票
2 回答
8226 浏览
提问于 2025-04-15 23:42

我有多个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 个回答

2

你可以用正则表达式来实现这个功能(可以选择编译一下):

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

不过这样做的话,像是制表符分隔的字段里面的逗号就没考虑到。我建议你看看csv模块,可能会对你有帮助。

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

撰写回答