美文网首页
工作中遇到的容易忽视的坑

工作中遇到的容易忽视的坑

作者: _icey_ | 来源:发表于2024-04-18 16:39 被阅读0次

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())

相关文章

网友评论

      本文标题:工作中遇到的容易忽视的坑

      本文链接:https://www.haomeiwen.com/subject/jchyxjtx.html