繁体   English   中英

Python处理包含奇怪字符的文件

[英]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"

它不会崩溃,但最终会去除一些奇怪的字符,然后丢掉列的间距。 这是我正在谈论的其中一个字符为十六进制的示例(需要使用图像,因为我无法在此处复制/粘贴它):

文本

在此处输入图片说明

  • 4E是儿童中的“ N”
  • EF BF BD组成了..东西
  • 53是儿童的S

我确定这是问题的一部分。 因此,我应该怎么做才能简单地:

接收文件,使用正则表达式将\\ d {3}-\\ d {2}-\\ d {4}更改为XXX-XX-XXXX,其中文件中包含一些奇怪的字符,而无需更改文件中的任何其他内容? 谢谢你们!

您应该以二进制模式打开文件,并避免处理UTF-8的Unicode解码。

然后使用字节正则表达式查找社会保险号,并将找到的位置替换为相关字节。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM