gpt4 book ai didi

Python写入文本文件跳过坏行

转载 作者:行者123 更新时间:2023-11-27 23:37:03 24 4
gpt4 key购买 nike

已解决:问题与 Python 版本有关,请参阅 stackoverflow.com/a/5513856/2540382

我正在摆弄 htm -> txt文件转换,我遇到了一点麻烦。我的项目本质上是转换 messages.htm我将我的 Facebook 聊天记录下载到一个 messages.txt 文件中包含所有 <> 的文件删除了括号并保留了格式。

文件messages.htm被解析成变量 text .

然后我运行:

target = open('output.txt', 'w')
target.write(text)
target.close

这似乎有效,除非我遇到无效字符。如下面的错误所示。有没有办法:

  1. 写入时跳过包含无效字符的行?

  2. 找出无效字符的位置并删除相应的字符或行?

期望的结果是尽可能避免将奇怪的字符放在一起。

return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\U000fe333' in position 37524: character
maps to <undefined>

最佳答案

target = open('output.txt', 'wb')
target.write(text.encode('ascii', 'ignore'))
target.close()

对于 .encode(..) 的“errors”参数,'ignore' 将去掉这些字符,'replace' 将用'?' 替换它们。

为了测试这一点,我将写入行替换为

target.write(u"foo\U000fe333bar".encode("ascii", "ignore"))

并确认 output.txt 只包含“foobar”。

更新: 我将 open(.., 'w') 编辑为 open(.., 'wb') 来制作确保这也适用于 Python 3。

关于Python写入文本文件跳过坏行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33448233/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com