1

我正在使用 python 读取 CSV 文件,对于某些字段,我想删除转义字符 ( 'aaa/bb'to 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>
    )
)

我可以在同一行使用几种方言吗?如何?另一个想法?

4

2 回答 2

1

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

这样的事情应该很好:

reader = csv.reader(yourFileHandle)
writer = csv.writer(outputFileHandle)
for row in reader:
    row[5] = row[5].replace(r'\','')
    writer.writerow(row)
于 2011-09-12T15:48:42.730 回答
0

escapechar如果引用不是QUOTE_NONE并且doublequote是 True (默认) ,则不需要。

>>> 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\"
于 2011-09-12T15:37:23.623 回答