带有多个分隔符的pandas read_csv不起作用
我需要能够用带有多个分隔符的pandas read_csv不起作用,pandas,csv,Pandas,Csv,我需要能够用read_csv解析2种不同类型的csv,第一种是-分隔值,第二个具有,-分隔值。我需要同时做这件事 也就是说,CSV可以具有以下格式: some;csv;values;here 或者这个: some,csv,values,here 甚至混合: some;csv,values;here 我尝试了很多方法,比如下面的正则表达式,但都不起作用: data = pd.read_csv(csv_file, sep=r'[,;]', engine='python') 我对正则表达式做了
read_csv
解析2种不同类型的csv,第一种是代码>-分隔值,第二个具有,
-分隔值。我需要同时做这件事
也就是说,CSV可以具有以下格式:
some;csv;values;here
或者这个:
some,csv,values,here
甚至混合:
some;csv,values;here
我尝试了很多方法,比如下面的正则表达式,但都不起作用:
data = pd.read_csv(csv_file, sep=r'[,;]', engine='python')
我对正则表达式做了什么错误吗?我没有读取文件,而是运行了您的代码示例
从字符串读取:
txt = '''C1;C2,C3;C4
some;csv,values;here
some1;csv1,values1;here1'''
data = pd.read_csv(io.StringIO(txt), sep='[,;]', engine='python')
并得到了一个适当的结果:
C1 C2 C3 C4
0 some csv values here
1 some1 csv1 values1 here1
请注意,sep参数甚至可以是普通(非原始)字符串,
因为它不包含任何反斜杠
因此,您可以将多个分隔符指定为正则表达式模式
代码失败的原因可能是代码划分“不一致”
将行转换为文件。也许您应该确保每一行都包含
相同数量的逗号和分号(至少不要太多)
仔细查看堆栈跟踪。应该包括一些信息
关于源文件的哪一行导致了问题。
然后查看指示的行并更正它
编辑
为了查看“失败案例”中发生的情况,我将源字符串更改为:
txt = '''C1;C2,C3;C4
some;csv,values;here
some1;csv1,values1;here1
some2;csv2,values2;here2,xxxx'''
i、 e.我添加了一行5字段(多了一个)
然后,执行上述代码会产生错误消息:
ParserError: Expected 4 fields in line 4, saw 5. ...
注意第4行中的单词,精确地指出有问题的输入行
(行号从1开始)。我没有读取文件,而是运行了您的代码示例
从字符串读取:
txt = '''C1;C2,C3;C4
some;csv,values;here
some1;csv1,values1;here1'''
data = pd.read_csv(io.StringIO(txt), sep='[,;]', engine='python')
并得到了一个适当的结果:
C1 C2 C3 C4
0 some csv values here
1 some1 csv1 values1 here1
请注意,sep参数甚至可以是普通(非原始)字符串,
因为它不包含任何反斜杠
因此,您可以将多个分隔符指定为正则表达式模式
代码失败的原因可能是代码划分“不一致”
将行转换为文件。也许您应该确保每一行都包含
相同数量的逗号和分号(至少不要太多)
仔细查看堆栈跟踪。应该包括一些信息
关于源文件的哪一行导致了问题。
然后查看指示的行并更正它
编辑
为了查看“失败案例”中发生的情况,我将源字符串更改为:
txt = '''C1;C2,C3;C4
some;csv,values;here
some1;csv1,values1;here1
some2;csv2,values2;here2,xxxx'''
i、 e.我添加了一行5字段(多了一个)
然后,执行上述代码会产生错误消息:
ParserError: Expected 4 fields in line 4, saw 5. ...
注意第4行中的单词,精确地指出有问题的输入行
(行号从1开始)