假设我有一个包含制表符字符的列表:
mylist = [['line 1', '<a href="//<% serverNames[0].getHostname() %>:'],
['line 2', ' <% master.getConfiguration()>']]
当我将列表保存到CSV
文件中时,第2行代码中的tab
将被写入\t
line | code
-----------------------------------------------------
1 | <a href="//<% serverNames[0].getHostname() %>:
2 | \t <% master.getConfiguration()>
我之所以需要它,是因为我想将代码与其他列表进行比较。所以,我不想用空格等其他字符来替换制表符
我写的代码:
with open('codelist.csv', 'w') as file:
header = ['line','code']
writers = csv.writer(file)
writers.writerow(header)
for row in mylist:
writers.writerow(row)
如何解决这类问题
我无法重现Python2或Python3中的确切错误,但我有一个关于可能发生的事情的猜测
根据
csv.writer
,located here的文档此外,请注意,如果提供包含实际制表符的字符串,python
str
函数会精确地归纳出您所描述的行为:当然,您拥有的是字符串数据,但是,上面的文档并没有真正说明other的含义。以下是我在
_csv.c
,located here中实现writerows
的内容:因此,我怀疑这里发生的事情是,不知何故,您的列表包含的字符串数据的格式无法识别为unicode字符串,因此无法通过测试中的
PyUnicode_Check
分支,通过str
(在C代码中称为PyObject_Str
)发送,并因此嵌入转义序列因此,您可能需要检查这些数据是如何进入您的列表的
或者,可能我看到的源代码与您使用的Python版本不一致,您使用的是一个版本,比如说,只运行everything到
str
相关问题 更多 >
编程相关推荐