我有一个奇怪的文本文件,我被要求用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,但我得到了一个不同的编码错误。我只需要一种方法来吸收这个文件,做一个简单的正则表达式,然后把它放回去。我可以输入:
^{pr2}$它不会崩溃,但最终会剥离出一些奇怪的字符,从而使列间距变短。下面是我所说的一个字符的例子,它是十六进制的(需要使用图像,因为我不能复制/粘贴在这里):
我肯定这是问题的一部分。那么,我该怎么做才能做到:
将文件放入,使用正则表达式将\d{3}-\d{2}-\d{4}更改为XXX-XX-XXXX,其中文件中包含一些奇怪的字符,而不更改文件中的任何其他内容?谢谢大家!在
您应该以二进制模式打开文件,避免处理UTF-8的Unicode解码。在
然后使用字节正则表达式来查找社会保险号,并用相关字节替换找到的位置。在
相关问题 更多 >
编程相关推荐