是否可以在不同的领域使用不​​同的方言?

时间:2011-09-12 12:57:33

标签: python dialect

我正在使用python读取CSV文件,对于某些字段,我想删除转义字符('aaa/bb'aaabb),对于某些字段,请不要更改。

例如: 输入:13,0,0,"0",false,"test\\file",-1,-1,1314570610162,13,"1","Danny","name\\Mary"
预期产出:13,0,0,"0",false,"testfile",-1,-1,1314570610162,13 ,"1","Danny","name\Mary"

这是我正在使用的代码:

csv.register_dialect('mydialect', escapechar='\\')
dialect = csv.get_dialect('mydialect')
writer = csv.writer(sys.stdout, dialect=dialect)
writer.writerow
(
    (
        <row to write>
    )
)

我可以在同一行使用多种方言吗?怎么样?另一个想法?

2 个答案:

答案 0 :(得分:1)

你是在思考它。您不需要拥有多种方言,它们描述 csv文件布局。您希望删除某些字段中的字符,这在写入输出之前很容易完成。

这样的事情应该是好的:

reader = csv.reader(yourFileHandle)
writer = csv.writer(outputFileHandle)
for row in reader:
    row[5] = row[5].replace(r'\','')
    writer.writerow(row)

答案 1 :(得分:0)

如果引用不是QUOTE_NONEdoublequote为True(默认),则不需要escapechar

>>> import csv, sys
>>> w = csv.writer(sys.stdout)
>>> w.writerow([1,'"ab"','c,','d e', 'f', 'g\\'])
1,"""ab""","c,",d e,f,g\
>>> w = csv.writer(sys.stdout, quoting=csv.QUOTE_NONE,escapechar='\\')
>>> w.writerow([1,'"ab"','c,','d e', 'f', 'g\\'])
1,\"ab\",c\,,d e,f,g\\
>>> w = csv.writer(sys.stdout, doublequote=False,escapechar='\\')
>>> w.writerow([1,'"ab"','c,','d e', 'f', 'g\\'])
1,\"ab\","c,",d e,f,"g\"