python csv writer不处理转义'|'正确地

时间:2014-03-19 11:03:24

标签: python json csv escaping

我正在尝试将一些JSON写入文件,以下是用于打开文件的代码,请记住我需要引用和" quotechar"用于确保JSON在写入文件时有效的参数。

file = csv.writer(open("myfile" + ".txt",'ab'),delimiter = '|',quoting=csv.QUOTE_NONE, quotechar='')

出于某种原因,如果JSON包含' |'消息"需要转义,但没有escapechar设置"抛出异常。下面是一个示例,有没有办法通过在打开文件时以任何其他方式传递参数来避免这样的问题?

"clickthrulink.Description": "|this is a test"

1 个答案:

答案 0 :(得分:1)

设置转义字符以转义JSON值中的|字符。在再次读取CSV文件时,您需要重新使用相同的转义字符:

file = csv.writer(open("myfile" + ".txt",'ab'),
                  delimiter = '|', quoting=csv.QUOTE_NONE, quotechar='',
                  escapechar='\\')

演示:

>>> from cStringIO import StringIO
>>> import csv
>>> f = StringIO()
>>> writer = csv.writer(f, delimiter = '|', quoting=csv.QUOTE_NONE, quotechar='', escapechar='\\')
>>> writer.writerow(['{"clickthrulink.Description": "|this is a test"}'])
>>> f.getvalue()
'{"clickthrulink.Description": "\\|this is a test"}\r\n'
>>> print f.getvalue()
{"clickthrulink.Description": "\|this is a test"}