我有多个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]
答案 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)