问题
前几天遇到一个问题,python读取文件时用f.find(“xxx”)获取到偏移量后用f.seek()值定位偏移量,结果发生了一个奇妙的现象,打印出来的readline并非偏移到的那一行。
思考
导致偏移出现偏差的原因有可能:
1. 存在中文字段,gbk的中文字段占有2个字节
2. 回车键“/t/r”占有两个字符
处理方式
鉴于上述原因进行以下操作:
- 另外定义重新打开一个文件对象用于查找偏移操作
- 更新所有的回车操作,中文字段为“- -” (此处可以更替为任意两个不影响后续造作的英文/标点字符)
content = re.sub(pattern, “–”, self.f2.read().replace("\n", “–”))