python - 写入和读取 csv 文件时出现特殊字符 (\r) 问题

标签 python pandas special-characters export-to-csv

我正在使用 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 之前检查并“清理”每个字符串,那么最简单的方法是什么?

最佳答案

除非有人有更好的建议,否则我将按如下方式处理具体问题 - 在加载 Pandas 之前预处理每个 csv 文件。它似乎适用于我当前的系统,但不相信它是万无一失的。

In [30]: f = open("my_df.csv")

In [31]: content = f.read().replace('\r',' ')

In [32]: with open("my_df2.csv", "w") as g:
   ....:     g.write(content)
   ....:     

In [33]: df2 = pd.DataFrame.from_csv("my_df2.csv")

In [34]: df2
Out[34]: 
       A     B
0    one  four
1    t o  five
2  three   six

关于python - 写入和读取 csv 文件时出现特殊字符 (\r) 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39217629/

相关文章:

python - 如何有效地 cythonize "vectorize"函数(numpy 库)- python

python - 在 Mavericks 上安装 libtiff

python - 将分组数据框分解为单独的数据框

excel - 如何使用 pandas excel writer 在 excel 文件中写入数据?

php - 使用特殊字符排序

python - 美丽汤4 : Missing Parsed Table Data

python - learnpython.org 模块练习

python - 使用 Facetgrid 添加辅助 y 轴

Php get 方法与 & 作为字符串的一部分

Python子进程check_output编码特殊字符