如何在 python 中将长文本正确编码为 utf-8?

How to properly encode a long text to utf-8 properly in python?

我们可以使用此方法将文本编码为 utf-8

print u"\u221A".encode('utf-8')

但是,我们如何对这样的文本进行编码?

[<p>d = \u221a2RH</p>, <p>d = 2Rlh</p>, <p>d = 2Rl\u221ah</p>, <p>d = 2Rh</p>]

以上文字是抓取网页的输出数据。它可能包含多行文本或单行文本。

抓取多个 HTML 文本后,我们将其存储在列表中。

自己找到了答案。

只需在此字符串前添加 "u" 即可得到预期的输出。

print u"[<p>d = \u221a2RH</p>, <p>d = 2Rlh</p>, <p>d = 2Rl\u221ah</p>, <p>d = 2Rh</p>]".encode('utf-8')

输出是

[<p>d = √2RH</p>, <p>d = 2Rlh</p>, <p>d = 2Rl√h</p>, <p>d = 2Rh</p>]

正在等待别人的回答,以检查与我的代码相比,是否有人拥有良好且高效的代码。

看来您的最终目标是转化

[<p>d = \u221a2RH</p>, <p>d = 2Rlh</p>, <p>d = 2Rl\u221ah</p>, <p>d = 2Rh</p>]

进入

[<p>d = √2RH</p>, <p>d = 2Rlh</p>, <p>d = 2Rl√h</p>, <p>d = 2Rh</p>]

有一种简单的方法可以实现这一点,使用 "codecs" 模块(文档:https://docs.python.org/3/library/codecs.html

代码:

import codecs
obj = '[<p>d = \u221a2RH</p>, <p>d = 2Rlh</p>, <p>d = 2Rl\u221ah</p>, <p>d = 2Rh</p>]'
codecs.encode(obj, encoding='utf-8', errors='strict')
print(obj)

输出:

[<p>d = √2RH</p>, <p>d = 2Rlh</p>, <p>d = 2Rl√h</p>, <p>d = 2Rh</p>]