【发布时间】:2016-08-30 01:49:08
【问题描述】:
我正在使用 pandas 加载由 excel 创建的 csv 文件,进行一些分析,然后将结果保存到 csv 文件。我注意到 pandas to_csv 和 from_csv 方法似乎无法处理特殊字符,例如 \r 但也不会引发任何错误。
In [7]: import pandas as pd
In [8]: data = {
'A': ['one', 'two', 'three'],
'B': ['four', 'five', 'six']
}
In [9]: df = pd.DataFrame(data)
In [10]: df
Out[10]:
A B
0 one four
1 two five
2 three six
In [11]: df.loc[1,'A'] = 't' + '\r' + 'o'
In [12]: df
Out[12]:
A B
0 one four
1 t\ro five
2 three six
In [13]: df.to_csv("my_df.csv")
In [14]: df2 = pd.DataFrame.from_csv("my_df.csv")
In [15]: df2
Out[15]:
A B
0 one four
1 t NaN
o five NaN
2 three six
由于我没有在此处指定任何编码,因此我假设它使用的是 ASCII,但即使我指定 encoding='utf-8' 进行写入和读取,我也会得到相同的结果。
如何编写强大的 csv 写入和读取脚本,以免行/列损坏或发生其他意外情况?如果唯一的解决方案是在写入 csv 之前检查并“清理”每个字符串,那么最简单的方法是什么?
【问题讨论】:
-
CSV 是一种相当狂野的格式,包含大量方言。 RFC 4180 试图定义它。那里。 TEXTDATA 块中不允许有回车符 (
\r)。它是行(记录)分隔符的一部分。
标签: python pandas special-characters export-to-csv