繁体   English   中英

用Python将转义字符写入Csv文件

[英]Writing Escape Characters to a Csv File in Python

我在python中使用csv模块,转义字符不断弄乱我的csv。 例如,如果我有以下内容:

import csv

rowWriter = csv.writer(open('bike.csv', 'w'), delimiter = ",")

text1 = "I like to \n ride my bike"
text2 = "pumpkin sauce"

rowWriter.writerow([text1, text2])
rowWriter.writerow(['chicken','wings'])

我希望我的csv看起来像:

I like to \n ride my bike,pumpkin sauce
chicken,wings

但是结果却是

I like to
ride my bike,pumpkin sauce
chicken,wings

我已经尝试过将引号,双引号,escapechar和csv模块的其他参数组合使用,但是我似乎无法使其正常工作。 有人知道这是怎么回事吗?

*注意-我也使用编解码器encode(“ utf-8”),因此text1的确类似于"I like to \\n ride my bike".encode("utf-8")

问题不在于将它们写入文件。 问题在于\\n''""内时是换行符。 您真正想要的是'I like to \\\\n ride my bike'r'I like to \\n ride my bike' 'I like to \\\\n ride my bike' r'I like to \\n ride my bike' (请注意r前缀)。

首先,不清楚为什么要在文件中显示r"\\n" (两个字节)而不是"\\n" (一个字节)。 输出文件的使用者打算做什么? 在每个输入字段上使用ast.evaluate_literal() 如果您的实际数据包含(非ASCII字符,撇号,引号)中的任何一个,那么我会非常警惕使用repr()对其进行序列化。

其次,您错误地报告了代码或输出(或两者)。 您显示的代码实际产生:

"I like to
 ride my bike",pumpkin sauce
chicken,wings

第三,关于您的"I like to \\n ride my bike".encode("utf-8")str_object.encode("utf-8")如果str_object仅包含ASCII字节,则毫无意义-它什么也不做。 否则会引发异常。

第四,此评论:

现在,我正在使用原始字符串,因此不再需要调用编码。 我正在使用的文本中有很多unicode字符,因此在开始使用原始字符串之前,我正在使用encoding,以便csv可以读取unicode文本

毫无意义-正如我所说, "ascii string".encode('utf8')是毫无意义的。

考虑向后退两步,并解释您真正想做的事情:数据来自何处,其中包含什么,最重要的是,读取文件的过程将做什么?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM