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

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

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

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


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

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

相反,您应该使用该模块。它包含一个有用的类,可以检测文件中使用了哪些分隔符。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在python中,只要您使用熟悉的格式,您通常可以找到一些工具来帮助您解决问题。从多次失败的重新发明轮子的尝试中得到的教训是:)1024指的是什么?@user809695这意味着根据文件的前1024字节确定格式。它可以是任何其他数字,它只需要足够大以包含足够的数据来确定格式。
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