Python:使用多个分隔符拆分文件
我有多个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