xml 列表 index中文编码问题

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
原文地址:https://www.cnblogs.com/MorganMa/p/14803320.html