Python 检测 csv 文件中的定界符/分隔符

Mar*_*nda 8 python csv delimiter separator pandas

我有一个函数可以读取和处理*.csv多个数据帧中的文件。

但是,并非所有 CSV 文件都具有相同的分隔符。那么,python如何检测csv文件具有哪种类型的分隔符,然后在read_csv()函数中使用它来在pandas中读取它呢?

df = pd.read_csv(path, sep = 'xxx',header = None, index_col = 0)
Run Code Online (Sandbox Code Playgroud)

Cor*_*ien 14

更新

\n

事实上,用作engine=\'python\'的参数read_csv。它将尝试自动检测正确的分隔符。

\n
\n

sepstr,默认\xe2\x80\x98,\xe2\x80\x99

\n

要使用的分隔符。如果 sep 为 None,则 C 引擎无法自动检测分隔符,但 Python 解析引擎可以,这意味着将使用后者并通过 Python\xe2\x80\x99s 内置嗅探工具 csv.Sniffer 自动检测分隔符。另外,长度超过1个字符且与\'\\s+\'不同的分隔符将被解释为正则表达式,也会强制使用Python解析引擎。请注意,正则表达式分隔符很容易忽略引用的数据。正则表达式示例:\'\\r\\t\'。

\n
\n

使用csv.Sniffer

\n
import csv\n\ndef find_delimiter(filename):\n    sniffer = csv.Sniffer()\n    with open(filename) as fp:\n        delimiter = sniffer.sniff(fp.read(5000)).delimiter\n    return delimiter\n
Run Code Online (Sandbox Code Playgroud)\n

演示:

\n
>>> find_delimiter(\'data.csv\')\n\',\'\n\n>>> find_delimiter(\'data.txt\')\n\' \' \n
Run Code Online (Sandbox Code Playgroud)\n