gpt4 book ai didi

python - 无法让我的 python 脚本替换\u 代码

转载 作者:太空宇宙 更新时间:2023-11-03 21:40:11 25 4
gpt4 key购买 nike

我正在处理源自网站的本地目录中的 HTML 文件,在 Windows 10 上的 Notepad++ 中进行开发。这些文件声称是“utf-8”,但其中包含大量脚本代码。写入文件时,我可以获得\u#### 代码和\x## 代码以及垃圾字符,但不是完整的人类代码。大多数\u2019 代码都没有被转换,但其他一些代码也被遗漏了。

with open(self.srcFilename, 'r', encoding='utf8') as f:
self.rawContent = f.read()
f.close()
soup = BeautifulSoup(self.rawContent, 'lxml')
:::: <<<=== other tag processing code
for section in soup.find('article'):
nextNode = section
if soup.find('article').find('p'):
::: <<<=== code to walk through tags
if tag_name == "p":
storytags.append(nextNode.text)
::: <<<=== conditions to end loop
i=1
for line in storytags:
print("[line %d] %s" % (i, line))
logger.write("[line %d] %s\n" % (i, line))
i+=1
setattr(self, 'chapterContent', storytags)

如果没有 utf-8 编码,我会收到错误

File "C:\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 0x9d in position 52120: character maps to <undefined>

因此读取的文件使用utf-8编码。如果我进行控制台打印,从上面的部分它会打印可读/清晰(?)。但是,写入文件会产生垃圾字符,例如 They've 而不是 They ve “Let’s ”而不是“让我们

经过大量阅读后,我最接近获得人类可读输出的方法是更改​​我的 write() 语句,但我仍然留下杂散代码。

(1) logger.write("[line %d] %s\n" % (i, line.encode('unicode_escape').decode()))
(2) logger.write("[line %d] %s\n" % (i, line.encode().decode('utf-8)))

第一个语句给了我文本,还有\u#### 代码和一些\xa0 代码。第二条语句生成一个 HTML 文件,其中包含我可以在 HTML 浏览器中阅读的文本,但 Calibre epub 生成器仍然无法正确解释 \u2019 。我尝试使用 this question/solution但它无法识别\u 代码。

是否有可能的解决办法,或者是否有一些指导如何更好地处理我的问题?

编辑:忘记添加,我正在写信给 with open('log.txt', 'w+'):。我之前使用过 encoding='utf-8' 但这似乎让情况变得更糟。

最佳答案

搜索了一个星期,终于在这里发帖后找到了答案,Removing unicode \u2026 like characters in a string in python2.7 。顺便说一句,我正在使用 Python 3.6,因此它与 python 版本无关。

with open(output, 'w+') as out:
::: <<<=== code
line = line.encode('utf-8').decode('ascii','ignore')`
out.write(line)

我仍然需要处理有或没有编码的 (output, 'w+') 的变体。不管怎样...这终于给了我最好的结果。

关于python - 无法让我的 python 脚本替换\u 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52921010/

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