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

问题描述 投票:0回答:1

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

在这种状态下,我无法打开它并通过任何程序读取,因为它以charmap错误结束。

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:\Users\Filip\AppData\Local\Programs\Python\Python36\lib\encodings\cp1252.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>

这是我的文件编辑器,下载问题(下载5小时需要8小时 - 谢谢,Facebook)的问题,或者只是这样保存在一行的大文本文件没有机会正常工作?

我试图打开文件:

-记事本

-EmEditor - 具有讽刺意味的是,它使用文件比使用记事本更糟糕

编辑1:

好吧,我设法将整个HTML代码拆分为纯粹的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")

现在我正在寻找删除有问题的行的方法,或者只是跳过它。也许在阅读时我应该创建新文件,只保存所有好的文件?但是,如何跳过产生错误的行,所以很高兴继续。敬请关注,新的更新即将来临;)

python-3.x facebook notepad++ emeditor
1个回答
0
投票

好的,所以解决方案是:

  1. 将代码划分为行。

为避免使用HTML代码,我在浏览器中打开它并将聊天记录复制/粘贴到记事本++。然后保存为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)

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

© www.soinside.com 2019 - 2024. All rights reserved.