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

2024-05-15 02:15:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个奇怪的文本文件,我被要求用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}$

它不会崩溃,但最终会剥离出一些奇怪的字符,从而使列间距变短。下面是我所说的一个字符的例子,它是十六进制的(需要使用图像,因为我不能复制/粘贴在这里):

text

enter image description here

  • 4E在儿童中是N
  • EF BF BD组成。。东西
  • 53是儿童中的S

我肯定这是问题的一部分。那么,我该怎么做才能做到:

将文件放入,使用正则表达式将\d{3}-\d{2}-\d{4}更改为XXX-XX-XXXX,其中文件中包含一些奇怪的字符,而不更改文件中的任何其他内容?谢谢大家!在


Tags: 文件编码标准错误byte字符垃圾号码
1条回答
网友
1楼 · 发布于 2024-05-15 02:15:07

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

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

相关问题 更多 >

    热门问题