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

2024-09-28 13:29:41 发布

您现在位置: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)


Tags: 文件csv代码readdataunicode动态dataset
2条回答

希望这有帮助。您可以使用分隔符或Sep.referepythonDocumentation

\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")

感谢@Tai

IMHO,你可以用正则表达式

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

相关问题 更多 >

    热门问题