我正在使用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>
)
)
我可以在同一行使用多种方言吗?怎么样?另一个想法?
答案 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_NONE
且doublequote
为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\"