我有以下字符串:
>>> line = '\x00\t\x007\x00\t\x00C\x00a\x00r\x00d\x00i\x00o\x00 \x00M\x00e\x00t\x00a\x00b\x00o\x00l\x00i\x00c\x00 \x00C\x00a\x00r\x00e\x00\t\x00\t\x00\t\x00\t\x00 \x001\x002\x00,\x007\x008\x008\x00,\x005\x002\x008\x00.\x000\x004\x00\r\x00\n'
当我在python终端中输入变量line
时,它显示以下内容:
>>> line
'\x00\t\x007\x00\t\x00C\x00a\x00r\x00d\x00i\x00o\x00 \x00M\x00e\x00t\x00a\x00b\x00o\x00l\x00i\x00c\x00 \x00C\x00a\x00r\x00e\x00\t\x00\t\x00\t\x00\t\x00 \x001\x002\x00,\x007\x008\x008\x00,\x005\x002\x008\x00.\x000\x004\x00\r\x00\n'
当我打印它时,它显示以下内容:
>>> print line
7 Cardio Metabolic Care 12,788,528.04
在变量line
中,每个单词都使用\t
分隔,我想将其保存到csv文件中。所以我尝试使用以下代码:
import csv
with open('test.csv', 'wb') as csvfile:
spamwriter = csv.writer(csvfile, delimiter=',')
spamwriter.writerow(line.split('\t'))
当我查看test.csv
文件时,我只得到以下内容
,,,,,,
是否可以将这些单词输入csv文件。请帮助。
答案 0 :(得分:1)
您的输入文本未损坏,已编码 - 为UTF-16(本例中为Big Endian)。它本身就是CSV,只有tab作为分隔符。
您必须将其解码为字符串,然后才能正常使用。
理想情况下,从源读取时声明正确的字节编码。例如,当您打开文件时,您可以声明文件使用的编码,以便文件阅读器为您解码内容。
如果您有来自源的字节字符串,在读取时无法声明编码,则可以手动解码:
resume
但是因为我认为你实际上是从文件中读取它:
line = '\x00\t\x007\x00\t\x00C\x00a\x00r\x00d\x00i\x00o\x00 \x00M\x00e\x00t\x00a\x00b\x00o\x00l\x00i\x00c\x00 \x00C\x00a\x00r\x00e\x00\t\x00\t\x00\t\x00\t\x00 \x001\x002\x00,\x007\x008\x008\x00,\x005\x002\x008\x00.\x000\x004\x00\r\x00\n'
decoded = line.decode('utf_16_be')
print decoded
# 7 Cardio Metabolic Care 12,788,528.04