[英]Python process a file that contains strange characters
我有一个奇怪的文本文件,需要用XXX-XX-XXXX替换任何社会保险号。 大! 只需将文件吸进去,将正则表达式垃圾掉,然后将其写出即可。 热爱生活,这将很容易。 我的接受标准是,我只能更改SSN,文件的其余部分必须保持完全相同,因为它具有固定宽度的列,甚至必须保留奇怪的字符才能调试其他进程。 好,很酷,我明白了。
我在以下位置读取文件:
filehandle = open("text.txt", "r", encoding="UTF-8")
它给了我一些编码错误,例如:
'utf-8' codec can't decode byte 0xd1 in position 6919: invalid continuation byte
我不知道编码。 我尝试过chardet,它认为它是ASCII,但我只是遇到了另一个编码错误。 我只需要一种方法来吸收这个文件,做一个简单的正则表达式,然后放回去。 我可以输入:
errors="ignore"
它不会崩溃,但最终会去除一些奇怪的字符,然后丢掉列的间距。 这是我正在谈论的其中一个字符为十六进制的示例(需要使用图像,因为我无法在此处复制/粘贴它):
我确定这是问题的一部分。 因此,我应该怎么做才能简单地:
接收文件,使用正则表达式将\\ d {3}-\\ d {2}-\\ d {4}更改为XXX-XX-XXXX,其中文件中包含一些奇怪的字符,而无需更改文件中的任何其他内容? 谢谢你们!
您应该以二进制模式打开文件,并避免处理UTF-8的Unicode解码。
然后使用字节正则表达式查找社会保险号,并将找到的位置替换为相关字节。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.