我有一列csv的值为'\0'
。我想将其作为\u0000
值在json中打印。我使用了熊猫read_csv
,并将列的dtypes设置为str
来读取文件。当我将其打印到json时,它打印为\\0
,即\0
,反斜杠转义了。
如何正确将其读取为NULL字符并将其打印为Unicode \u0000
?
这是csv示例
id,data,timestamp
1,\0,2018-03-17 03:12:58
2,\0,2018-03-19 09:00:40
3,\0,2018-03-19 09:26:05
我期望的输出
{ "id": 1, "data": "\u0000", "timestamp":"2018-03-17T03:12:58.000Z"}
{ "id": 2, "data": "\u0000", "timestamp":"2018-03-19T09:00:40.000Z"}
{ "id": 3, "data": "\u0000", "timestamp":"2018-03-19T09:26:05.000Z"}
我如何使用大熊猫阅读
csvfile = open('somefile.csv', 'r')
col_names = ['id', 'data']
dtypes = { 'data': str }
df = pd.read_csv(csvfile, names=col_names, dtype=dtypes)
以及如何将其写入json
jsonfile = open('somefile.json', 'w')
df.to_json(jsonfile, orient='records', lines=True, date_format='iso')
答案 0 :(得分:2)
\0
不是CSV中空字节的有效表示形式。相反,它需要一个原义的空字节(这是可以的,因为解析器仅查找指定的分隔符以将流分成字段)。
要使用转义序列处理文件,可以在pd.read_csv()
中指定encoding='unicode_escape'
。这种编码会将转义序列解码为原义的空字符。