Python使用csv库读取CSV文件时XPath被篡改报无效谓词错误如何解决?
错误原因
- 你观察到的
Â字符是编码解码不匹配导致的典型问题:你的CSV文件是UTF-8编码,但调用open()读取文件时没有显式指定编码,Python会使用操作系统默认编码(Windows下通常为GBK/CP936,部分类Unix系统也可能不是UTF-8)对文件解码。 - 你的XPath中包含了*非间断空格(NBSP,Unicode U+00A0)*而非普通ASCII空格,该字符的UTF-8编码为
0xC2 0xA0,用非UTF-8编码解码时,0xC2会被映射为Â字符,导致XPath语法被破坏,最终抛出无效谓词的报错。
修复方案
- 首先修改文件读取逻辑,打开文件时显式指定
encoding='utf-8',从根源解决解码错误问题。 - 可额外添加非间断空格替换逻辑,避免XPath中残留的特殊空格导致后续匹配异常,修改后的代码如下:
import csv with open("input.csv", mode = 'r', encoding='utf-8') as file: reader = csv.reader(file,delimiter = ';') next(reader) #跳过表头读取 InputData = [] #以嵌套列表形式存储数据行 for row in reader: # 清理所有字段中的非间断空格,去除首尾空白 cleaned_row = [col.replace('\u00A0', ' ').strip() for col in row] InputData.append(cleaned_row)
- 可选优化:如果是手动编辑的CSV文件,可直接把XPath中的所有特殊空格替换为普通ASCII空格,从数据源避免该问题。
修改完成后可打印读取到的XPath字段,确认无Â字符、和预期语法一致即可正常使用。
内容的提问来源于stack exchange,提问作者user8210645
相关产品推荐
相关产品推荐

