1. 对字符串排序的时候,没有考虑百位进千位的情况
比如:
l = ["246628_002_466","246628_002_882","246628_002_1031"]
l.sort(reverse=True)
惯性感觉倒序排序之后的结果应该是:
["246628_002_1031","246628_002_882","246628_002_466"]
但是实际上项目中出现了问题,实际运行的结果是:
["246628_002_882","246628_002_466","246628_002_1031"]
debug到这一步才吃到了自己偷懒没转换int类型再排序的后果,因为计算机人为字符串1是比字符串4小的,所以把它排在了最后面,但是实际上我想要的是_1031排在最前面的效果,所以需要把它截取最后一个下划线后的数字转换为int类型再排序
2. 读取数据的时候没加encode="utf-8",导致解析失败
最近解析xml文件的时候,遇到了一个百思不得其解的问题,同样内容的xml文件,我新建xml文件把内容复制过去使用xml.etree.ElementTree解析就没有问题,但是使用原始的文件去解析就报错
报错:
xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 1
在确认内容没问题之后,发现解析格式有问题,
因为原始的xml文件默认是UTF-8-BOM格式,而我在读文件的时候直接使用的with open()去读的,导致了这个问题
import xml.etree.ElementTree as ET
with open(path) as f:
root = ET.fromstring(f.read())
修改为下述代码之后就好了,不会报错了
import xml.etree.ElementTree as ET
with open(path,encoding="utf-8") as f:
root = ET.fromstring(f.read())
网友评论