我有一个定界符为';'的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
希望这会有所帮助。您可以使用定界符或分隔符。请参考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