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

问题描述 投票:0回答:2

我有一个定界符为';'的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)

python pandas csv delimiter
2个回答
1
投票

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

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

0
投票

希望这会有所帮助。您可以使用定界符或分隔符。请参考Python Documentation

\ s-匹配任何空白字符;这等效于[\ 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

© www.soinside.com 2019 - 2024. All rights reserved.