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

如何在python中将长文本正确编码为utf-8?,python,unicode,utf-8,python-unicode,Python,Unicode,Utf 8,Python Unicode,我们可以使用这种方法将文本编码为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>] [d=\u221a2RH,d=2Rlh,d=2Rl\u221ah,d=2Rh] 上面的文本是抓

我们可以使用这种方法将文本编码为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>]
[d=\u221a2RH

,d=2Rlh

,d=2Rl\u221ah

,d=2Rh

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


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

自己找到了答案

只要在这个字符串前面加上“u”,它就会给你预期的输出

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

,d=2Rlh

,d=2Rl\u221ah

,d=2Rh

”。编码('utf-8'))
输出为

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

,d=2Rlh

,d=2Rl√h

,d=2Rh

]

等待其他人的回答,以检查某人的代码是否比我的代码好且高效。

似乎您的最终目标是转换

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

,d=2Rlh

,d=2Rl\u221ah

,d=2Rh

]
进入

[d=√2RH

,d=2Rlh

,d=2Rl√h

,d=2Rh

]
有一种简单的方法可以实现这一点,使用“编解码器”模块(文档:)

代码:

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)
导入编解码器
obj='[d=\u221a2RH

,d=2Rlh

,d=2Rl\u221ah

,d=2Rh

] codecs.encode(obj,encoding='utf-8',errors='strict') 打印(obj)
输出:

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

,d=2Rlh

,d=2Rl√h

,d=2Rh

]
什么是
[d=\u221a2RH

,d=2Rlh

,d=2Rl\u221ah

,d=2Rh

]
应该是什么?它对任何东西都不是有效的Python语法。你有没有抓取一个网页并将其HTML的4个片段提取到一个列表中?你有没有原始文本
[d=\u221a2RH

,d=2Rlh

,d=2Rl\u221ah

,d=2Rh

]
放在某个文件中?还有什么?你说的是“一个长文本”,但不清楚这个东西是否应该是一段文本。(是的,这很重要。)@user2357112supportsMonica是的,上面提到的文本是一个临时html,存储在列表中。你说你有一个列表,而不是字符串。你不能把
u
放在列表前。将
u
粘贴在前面是Python 2 Unicode字符串文本语法的一部分;它只适用于字符串文字,而不适用于列表,甚至不适用于运行时计算的字符串,就像任何刮削输出一样。@user2357112supportsMonica是的,我仍然面临这个问题。我的答案不好用。你能分享一下你的解决方案吗?我怀疑你所需要的实际上与UTF-8没有任何关系。但这很难说;我们没有足够的背景。听起来您真正的目标是让这些平方根字符显示为平方根字符,而不是反斜杠转义;这准确吗?是的,我的目标是显示平方根字符。反斜杠转义来自字符串“
repr
,该字符串由列表的
str
实现调用以避免歧义。为了避免这种情况,您需要避免直接打印列表。你需要做什么取决于你为什么要首先打印列表,而不是将其传递到其他数据处理阶段或将输出发送到文件或其他东西。请注意:使用python3运行此操作,它就会工作。
[<p>d = √2RH</p>, <p>d = 2Rlh</p>, <p>d = 2Rl√h</p>, <p>d = 2Rh</p>]