用Python将转义符写入Csv文件

2024-03-29 09:33:43 发布

您现在位置: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看起来像:

^{pr2}$

但结果却是

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

我尝试过将quoting、doublequote、escapechar和csv模块的其他参数组合起来,但似乎无法使其工作。有人知道这是怎么回事吗?在

*注意-我还使用了codecs encode(“utf-8”),所以text1看起来确实像"I like to \n ride my bike".encode("utf-8")


Tags: 模块csvtomylikesaucechickentext1
2条回答

首先,不清楚为什么要在文件中出现r"\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字节,它什么也不做。否则会引发异常。在

第四,这一评论:

I don't need to call encode anymore, now that I'm using the raw string. There are a lot of unicode characters in the text that I am using, so before I started using the raw string I was using encode so that csv could read the unicode text

没有任何意义,正如我所说,"ascii string".encode('utf8')是没有意义的。在

考虑向后退一步或者两步,解释一下你真正想做的事情:你的数据从哪里来,里面有什么,最重要的是,读取文件的进程要做什么?在

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

相关问题 更多 >