簡體   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