如何将使用竖线加空格作为分隔符的Excel文件读取为pandas DataFrame
解决pandas读取多分隔符文件的问题
你遇到的问题核心有两个:
- 分隔符的正则写法错误:
|在正则语法中是代表“或”的特殊字符,你之前写的\s+|本质是匹配“一个以上空白”或者“空值”,自然达不到同时匹配竖线和空格的效果 - 注意文件格式适配:
pd.read_csv仅用来读取文本类表格文件,如果你手里的.xls是标准二进制Excel文件,用这个方法本身就不生效;如果是改了后缀名的竖线分隔文本文件,可以直接用下方第一种方案
方案1:文件为改后缀的文本类表格
将sep参数设为匹配空格/竖线的正则即可,同时指定引擎为python避免正则兼容告警,代码如下:
import pandas as pd DF = pd.read_csv(r'Desktop\Automation\File.xls', sep=r'[\s|]+', engine='python')
用你提供的示例内容测试,读取后会得到4列结构正常的DataFrame,列名分别为ID、Name、Job、Nationality,无数据错位问题。
方案2:文件为标准二进制.xls格式
先读取Excel文件再做列拆分即可,代码如下:
import pandas as pd # 读取原始Excel文件 DF = pd.read_excel(r'Desktop\Automation\File.xls') # 按竖线拆分所有列 DF = DF.iloc[:,0].str.split('|', expand=True).iloc[:,:-1] # 重命名列名 DF.columns = ['ID','Name','Job','Nationality'] # 拆分ID和Name的空格分隔内容 DF[['ID','Name']] = DF['ID'].str.split('\s', expand=True)
内容的提问来源于stack exchange,提问作者PythonBeginner
相关产品推荐
相关产品推荐

