使用pd.read_csv自动检测CSV文件中的分隔符

时间:2017-09-09 22:58:46

标签: python pandas csv delimiter

read_csv有没有办法自动检测分隔符? numpy的genfromtxt这样做。我的文件包含单个空格,双倍空格和制表符作为分隔符的数据。 genfromtext()解决了它,但比pandas的read_csv慢。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

选项1

使用delim_whitespace=True

df = pd.read_csv('file.csv', delim_whitespace=True)

选项2

将正则表达式传递给sep参数:

df = pd.read_csv('file.csv', sep='\s+')

这相当于第一个选项

Documentation for pd.read_csv.

答案 1 :(得分:0)

为了更好地控制,我使用了 python 项目中名为 detect_delimiter 的 python 模块。见https://pypi.org/project/detect-delimiter/。它已经存在了一段时间。与所有代码一样,您应该在部署之前使用您的解释器进行测试。我已经测试到 python 版本 3.8.5。

见下面的代码示例,其中自动检测分隔符,以及 var 分隔符是从方法的输出中定义的。然后代码读取 CSV 文件 使用 sep = 分隔符。我已经使用以下分隔符进行了测试,但其他分隔符应该可以工作: , |

它不适用于多字符分隔符,例如“,”

注意!此方法不会检测格式错误的 CSV 文件。在这种情况下 其中输入文件包含两者;和 ,该方法返回 ,作为检测到的分隔符。

grep -P '^(?=.*7)((?!77).)*$' Input_file