Facebook Messenger备份 - 有缺陷的文件,Charap的问题



我备份了Facebook Messenger。它默认保存为 html 文件。与我交谈过的每个人的每个文件。我拥有的最大文件超过 80MB。当我打开它时,我可以看到代码中有数千个拼写错误。代码显示 Á 或 Å 而不是 A,æ 而不是 ae,依此类推。

在这种状态下,我无法打开它并读取任何程序,因为它以字符映射错误结尾。

Traceback (most recent call last):
File "C:/Users/Filip/.PyCharmCE2018.2/config/scratches/test.py", line 35, in <module>
messages = open("message.html","r").read()
File "C:UsersFilipAppDataLocalProgramsPythonPython36libencodingscp1252.py", line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 1917064: character maps to <undefined>

是我的文件编辑器有问题,下载问题(下载 8GB 花了 5 个多小时 - 谢谢,Facebook(还是只是保存在单行中的大文本文件没有机会正常工作?

我正在尝试打开文件:

-记事本

-EmEditor - 具有讽刺意味的是,它处理文件的时间比记事本更糟糕

编辑 1:

好的,我设法将整个 htlm 代码拆分为简单的纯 txt,如下所示:

=A=
jakiefry
15November201511:34
=F=
mediumfry
15November201511:34
=A=
xD
15November201511:34
=A=
mozemediumjestemjakies
15November201511:34
=F=
xDD
15November201511:34
=A=
iostatniotyledejavumam
15November201511:34
...(900 000 lines more)

并逐行阅读,直到找到有问题的行。我使用了以下代码:

f = open('messege.txt')
try:
line = f.readline()
while line:
print(line)
line = f.readline()
f.close()
except Exception:
stop = input("stop before it crash")
print("and when I press enter it crash")

现在我正在寻找删除有问题的行的方法,或者干脆跳过它。也许在阅读时我应该创建新文件,其中所有好的行都将仅保存?但是,如何跳过出错的行,以便很高兴继续。请继续关注,新的更新即将;)

好的,所以解决方案是:

  1. 代码分成几行。

为了避免使用HTML代码,我在浏览器中打开它并将聊天记录复制/粘贴到notepad++。然后另存为txt文件。

  1. 逐行清理代码。

为此,我编写了一个脚本,可以逐行读取代码,如果出现错误,只需跳过它。没有给出错误的每一行都保存在新文件中。

file_old = open('fobarfoo.txt')
file_new = open('foobarfoo_new.txt', 'w+')
error_counter = 0 
line = file_old.readline()
while line:
try:
while line:
file_new.write(line)
line = file_old.readline()
file_old.close()
except Exception:
error_counter += 1
#stop = input("stop before it crash")
print(error_counter)

因此,输出是仅包含代码字符或行的新文件,不会生成字符映射错误。

最新更新