使用pd.read_csv读取txt文件设置sep='+++$+++'报nothing to repeat错误
问题解决办法
报错原因
pandas使用engine='python'时,sep参数默认会被当作正则表达式解析。你使用的分隔符+++$+++中包含正则特殊字符:
+在正则语法中表示匹配前一个字符1次及以上$在正则语法中表示匹配行尾
未转义直接传入的话,正则解析逻辑异常,因此抛出nothing to repeat at position 0错误。
可行解决方案
方案1:手动转义特殊字符
给分隔符中的所有正则特殊字符添加转义符\,同时使用原生字符串(前缀加r)避免Python字符串转义冲突:
pd.read_csv("dataset.txt", sep=r'\+\+\+\$\+\+\+', engine='python')
方案2:使用re.escape自动转义(更推荐)
调用re.escape()方法可以自动识别并转义字符串中所有的正则特殊字符,不需要手动逐个添加转义符,出错概率更低:
import re import pandas as pd df = pd.read_csv("dataset.txt", sep=re.escape('+++$+++'), engine='python')
读取完成后如果需要自定义列名,可直接给df.columns赋值即可,比如:
df.columns = ['用户id1', '用户id2', '电影id', '对话id列表']
内容的提问来源于stack exchange,提问作者OK 400
相关产品推荐
相关产品推荐

