Pandas 将 CSV 列中的 '\0' 读取为 NULL 字符并在 JSON 中打印为 Unicode
Posted
技术标签:
【中文标题】Pandas 将 CSV 列中的 \'\\0\' 读取为 NULL 字符并在 JSON 中打印为 Unicode【英文标题】:Pandas read '\0' in CSV column as NULL character and print as Unicode in JSONPandas 将 CSV 列中的 '\0' 读取为 NULL 字符并在 JSON 中打印为 Unicode 【发布时间】:2018-11-29 02:24:51 【问题描述】:我有一个 csv,其中一列具有 '\0'
值。我想在 json 中将其打印为 \u0000
值。我使用 pandas 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"
我如何使用 pandas 阅读它
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')
【问题讨论】:
您是否只使用 Pandas 读取 csv 并转换为 JSON?您是否将 Dataframe 用于其他用途? @ZakiIndra 如果答案解决了您的问题,请考虑accepting它。 (哇,真快:-)) 【参考方案1】:\0
不是 CSV 中空字节的有效表示。相反,它需要一个文字空字节(这没关系,因为解析器只查找指定的分隔符来将流分隔为字段)。
要处理带有转义序列的文件,您可以在pd.read_csv()
中指定encoding='unicode_escape'
。此编码会将转义序列解码为文字空字符。
【讨论】:
以上是关于Pandas 将 CSV 列中的 '\0' 读取为 NULL 字符并在 JSON 中打印为 Unicode的主要内容,如果未能解决你的问题,请参考以下文章
从 csv 中提取列中的数据,保存为字典(Python、Pandas)
当我将 pandas 数据框保存为 csv 文件时,从 18 位长的列中截断 3 位
当我使用 pandas 读取 .csv 中的特定列时,奇怪的跳转
如何在使用 pandas.read_csv 读取 csv 文件时将 pandas.dataframe 中的元素转换为 np.float?
如何在使用 pandas.read_csv 读取 csv 文件时将 pandas.dataframe 中的元素转换为 np.float?