Python 将带有未知分隔符的.csv加载到数据帧中

Python 将带有未知分隔符的.csv加载到数据帧中,python,csv,pandas,delimiter,Python,Csv,Pandas,Delimiter,我有许多.csv文件要加载到熊猫数据帧中,至少有两个分隔符逗号和分号,我不确定其余的分隔符。我知道delimeter可以使用 dataRaw = pd.read_csv(name,sep=",") 及 不幸的是,如果我没有指定分隔符,默认值是逗号,这将导致其他分隔符使用单列数据框。因此,是否有一种动态方式来分配分隔符,以便将任何csv传递给熊猫?例如,尝试使用逗号或分号。如果您有不同的分隔符可以使用,pandas文档没有提及在csv读取中使用逻辑: dataRaw = pd.read_csv(

我有许多.csv文件要加载到熊猫数据帧中,至少有两个分隔符逗号和分号,我不确定其余的分隔符。我知道delimeter可以使用

dataRaw = pd.read_csv(name,sep=",")


不幸的是,如果我没有指定分隔符,默认值是逗号,这将导致其他分隔符使用单列数据框。因此,是否有一种动态方式来分配分隔符,以便将任何csv传递给熊猫?例如,尝试使用逗号或分号。如果您有不同的分隔符可以使用,pandas文档没有提及在csv读取中使用逻辑:

dataRaw = pd.read_csv(name,sep=";|,")

是一个可以处理由OR(|)运算符划分的多个分隔符的运算符。

实际上在pandas中有一个答案(至少对于pandas 0.20.1)

sep:str,默认值','

要使用的分隔符。如果sep为None,则C引擎无法自动检测分隔符,但Python解析引擎可以,这意味着后者将自动使用。此外,长度超过1个字符且与“\s+”不同的分隔符将被解释为正则表达式,并且还将强制使用Python解析引擎。请注意,正则表达式分隔符容易忽略带引号的数据。正则表达式示例:'\r\t'

这意味着您只需使用

dataRaw = pd.read_csv(name, sep = None, engine = 'python')

如果存在除“;”之外的其他分隔符,则此操作也应有效或者在.csv文件中使用“.”(例如,制表符分隔符)。

好的,我试试看,我从来没有听说过正则表达式
dataRaw = pd.read_csv(name, sep = None, engine = 'python')