Python 导入 CSV 短代码(熊猫?)以';'分隔和 ',' 的整体

新手上路,请多包涵

我需要在 Windows 上用 Python 导入 CSV 文件。我的文件由“;”分隔并且包含带有非英语符号和逗号 (‘,’) 的字符串。

我读过帖子:

使用 Python 将 CSV 文件导入到 sqlite3 数据库表中

Python 导入 csv 到列表

当我跑步时:

 with open('d:/trade/test.csv', 'r') as f1:
    reader1 = csv.reader(f1)
    your_list1 = list(reader1)

我遇到一个问题:逗号更改为“-”符号。

当我尝试时:

 df = pandas.read_csv(csvfile)

我有错误:

pandas.io.common.CParserError:标记数据时出错。 C 错误:第 13 行需要 1 个字段,但看到了 2 个。

请帮忙。我更愿意使用 pandas,因为代码更短,没有列出 CSV 文件中的所有字段名称。

我知道可以临时替换逗号。尽管如此,我还是想通过一些参数来解决它。

原文由 Alex Martian 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 492
2 个回答

熊猫 解决方案 - 使用 read_csv 和正则表达式分隔符 [;,] 。您需要添加 engine='python' ,因为警告:

ParserWarning:回退到“python”引擎,因为“c”引擎不支持正则表达式分隔符(分隔符 > 1 个字符且不同于“\s+”被解释为正则表达式);您可以通过指定 engine=‘python’ 来避免此警告。

 import pandas as pd
import io

temp=u"""a;b;c
1;1,8
1;2,1
1;3,6
1;4,3
1;5,7
"""
#after testing replace io.StringIO(temp) to filename
df = pd.read_csv(io.StringIO(temp), sep="[;,]", engine='python')
print (df)

   a  b  c
0  1  1  8
1  1  2  1
2  1  3  6
3  1  4  3
4  1  5  7

原文由 jezrael 发布,翻译遵循 CC BY-SA 3.0 许可协议

Pandas 文档说参数:

pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html

 sep : str, default ‘,’

    Delimiter to use. If sep is None, will try to automatically determine this.

Pandas 没有解析由 ; 分隔的文件,因为默认值不是 None 表示为自动,而是 , 。添加 sep 参数设置为 ; pandas 解决了这个问题。

原文由 Alex Martian 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题