如何在python中的pd.read_csv函数中处理多个分隔符?

How to handle multiple delimiters in the pd.read_csv function in python?

我有一个 CSV 文件,分隔符为“;”。

以下代码仅处理带有“;”的 CSV作为分隔符。

dataset = pd.read_csv('/Data/formatted1.csv',header=0, delimiter = ';', encoding = 'unicode_escape')

但是,如果 CSV 的分隔符为 ',' 或 'tab' 或 '\n' 那么它应该动态处理它。有没有办法动态处理所有这些?

我试过下面的代码,但它不起作用。

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

恕我直言,你可以使用正则表达式,

import pandas as pd

df = pd.read_csv(PATH, sep=r'[,|;\t"]+(?=\S)', engine='python')

这里有一些例子,

from io import StringIO
import pandas as pd

s1 = """a|b|c
1|2|3
"""

s2 = """a;b;c
1;2;3
"""

print(pd.read_csv(StringIO(s1), sep=r'[,|;\t"]+(?=\S)', engine='python'))
print()
print(pd.read_csv(StringIO(s2), sep=r'[,|;\t"]+(?=\S)', engine='python'))

   a  b  c
0  1  2  3

   a  b  c
0  1  2  3

希望这对您有所帮助。您可以使用 Delimiter 或 Sep。参考 Python Documentation.

\s - Matches any whitespace character; this is equivalent to the set [ \t\n\r\f\v].

import pandas as pd
my_cols = [str(i) for i in range(45)] # create some row names
dataset = pd.read_csv('/Data/formatted1.csv', sep="\s+|;|,", names=my_cols, header=None, engine="python")

感谢