import xml.etree.ElementTree as ET
import os
classes = ["线纹",
"打砂纹",
"砂轮纹",
"抛光不足",]
for obj in root.iter('object'):
cls = obj.find('name').text
cls_id = classes.index(cls) if (cls in classes) else -1
今天对xml文本进行数据查找的时候出现问题,读取xml进行字符串匹配的时候出现无法匹配到的现象,通过IDE查看发现在转换中文文本时,出现utf-8 zwnbsp问题
UTF-8有一个BOM(Byte Order Mark)的问题。
在Unicode编码中有一个叫做"zero-width no-break space (ZWNBSP)"的字符,它的编码是0xFEFF。而0xFEFF在是一个实际中不存在的字符,所以不应该出现在实际传输中。UCSUCS (Unicode Character Set) 规范建议我们在传输字节流前,先传输字符"ZWNBSP"。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little- Endian的。因此字符"ZWNBSP"又被称作BOM。
解决方法:
从第二位开始取即可,更改代码如下
cls = obj.find('name').text
if cls not in classes:
cls = cls[1:]
cls_id = classes.index(cls) if (cls in classes) else -1