Python中的HTML解码

时间:2016-01-06 19:04:58

标签: python html unicode escaping cyrillic

我正在编写一个python脚本,用于批量替换HTML文件中的链接(实际上是图像和脚本源);我正在使用lxml。有一个问题,html文件是测验,他们有这样的数据打包(这里也有一些西里尔文):

<input class="question_data" value="{&quot;text&quot;:&quot;&lt;p&gt;[1] је наука која се бави чувањем, обрадом и преносом информација помоћу рачунара.&lt;/p&gt;&quot;,&quot;fields&quot;:[{&quot;id&quot;:&quot;1&quot;,&quot;type&quot;:&quot;fill&quot;,&quot;element&quot;:{&quot;sirina&quot;:&quot;103&quot;,&quot;maxDuzina&quot;:&quot;12&quot;,&quot;odgovor&quot;:[&quot;Информатика&quot;]}}]}" name="question:1:data" id="id3a1"/>

当我尝试使用以下命令在python中打印出这些数据时:

print "OLD_DATA:", data

它只打印出错误&#34; UnicodeEncodeError:字符映射到undefined&#34;。这些元素更多。我的目标是在输入的值部分更改图像链接,但如果我不知道如何打印此数据(或者应该如何将其写入文件),我就无法更改链接。 Python如何处理(解释)这个?请帮忙。谢谢!!! :)

1 个答案:

答案 0 :(得分:1)

你遇到的问题是我过去多次遇到的问题。该错误几乎总是意味着您正在使用的控制台环境无法显示它正在尝试打印的字符。可能值得尝试登录到文件,然后在可以显示字符的编辑器中打开日志。

如果您真的希望能够在控制台上看到它,那么编写一个函数来筛选您为不可打印字符打印的字符串可能是值得的

我还发现了一些其他可能对您的工作有帮助的StackOverflow帖子:

How do I get Cyrillic in the output, Python?

What is right way to use cyrillic in python lxml library

我也会推荐这篇文章和python手册:

https://docs.python.org/2/howto/unicode.html

http://www.joelonsoftware.com/articles/Unicode.html