如何在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")
感谢
我有一个 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")
感谢