在 Python 2.7.3 / Raspberry Pi 中使用特殊字符取消转义 HTML

2023-12-31

我被困在这里试图取消转义 HTML 特殊字符。

有问题的文本是

Rudimental & Emeli Sandé

应该转换为Rudimental 和 Emeli Sandé

文本通过 WGET 下载(在 python 之外)

要对此进行测试,请使用此行保存 ANSI 文件并将其导入。

import HTMLParser

trackentry = open('import.txt', 'r').readlines()
print(trackentry)
track = trackentry[0]
html_parser = HTMLParser.HTMLParser()

track = html_parser.unescape(track)

print(track)

当一行有时我收到此错误é in it.

*pi@raspberrypi ~/scripting $ python unparse.py
['Rudimental & Emeli Sand\xe9\n']
Traceback (most recent call last):
  File "unparse.py", line 9, in <module>
    track = html_parser.unescape(track)
  File "/usr/lib/python2.7/HTMLParser.py", line 472, in unescape
    return re.sub(r"&(#?[xX]?(?:[0-9a-fA-F]+|\w{1,8}));", replaceEntities, s)
  File "/usr/lib/python2.7/re.py", line 151, in sub
    return _compile(pattern, flags).sub(repl, string, count)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 11: ordinal not in range(128)*

相同的代码在 Windows 下工作正常 - 我只在树莓派上遇到问题 运行Python 2.7.3。


Python 无法解码 'é' ('\xe9') 使用 ASCII 编解码器,因为该字符不是 7 位 ASCII。

您的问题(精简):

import HTMLParser
parser = HTMLParser.HTMLParser()
input = 'Rudimental &amp; Emeli Sand\xe9'
output = parser.unescape(input)

produces

Traceback (most recent call last):
  File "problem.py", line 4, in <module>
    output = parser.unescape(input)
  File "/usr/lib/python2.7/HTMLParser.py", line 475, in unescape
    return re.sub(r"&(#?[xX]?(?:[0-9a-fA-F]+|\w{1,8}));", replaceEntities, s)
  File "/usr/lib/python2.7/re.py", line 151, in sub
    return _compile(pattern, flags).sub(repl, string, count)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 11: ordinal not in range(128)

HTMLParser.unescape()返回一个unicode对象,因此必须转换您的输入str。所以它要求默认编码(在你的情况下是 ASCII)并且无法解释 '\xe9' 作为 ASCII 字符(因为它不是)。我猜你的文件编码是 ISO-8859-1 其中 '\xe9' is 'é'.

有两个简单的解决方案。您可以手动进行转换:

import HTMLParser
parser = HTMLParser.HTMLParser()
input = 'Rudimental &amp; Emeli Sand\xe9'
input = input.decode('iso-8859-1')
output = parser.unescape(input)

或者你使用编解码器.open()代替open()每当您处理文件时:

import codecs
import HTMLParser
parser = HTMLParser.HTMLParser()
input = codecs.open("import.txt", encoding="iso-8859-1").readline()
output = parser.unescape(input)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Python 2.7.3 / Raspberry Pi 中使用特殊字符取消转义 HTML 的相关文章

随机推荐

  • Rails:切换用户 Gem 以及切换回原始用户的问题

    在我的应用程序中我正在使用switch user https github com flyerhzm switch user https github com flyerhzm switch user gem 允许管理员以另一个用户身份登录
  • BASH:基本 if then 和变量赋值

    我习惯了 csh 所以不得不使用 bash 有点令人恼火 这段代码有什么问题 if time gt 0300 time lt 0900 then mod 2 else mod 0 fi 按照标准应该是 if time gt 300 time
  • 有没有办法了解导致“_NSTouchBarFinderObservation”崩溃的原因?

    我的 Crashlytics 显示多个用户遇到以下崩溃 见下文 我能够重新创建这个的唯一方法 我怀疑用户正在这样做 是打开 Xcode Touch Bar 模拟器并在generations当应用程序运行时 以下设备和操作系统已报告崩溃 ma
  • 一个测试用例应该涵盖多少内容?

    到目前为止 我从未编写过正确的测试 只编写了测试成功后我会处理的小程序 我正在浏览Python的unittest网络上的模块和教程 但我不清楚 一个应该多少钱TestCase覆盖 我在网上看到过一些例子TestCase仅具有一种方法的类 以
  • 从 Postgres 和 jOOQ 中的分层表递归生成 JSON 树

    我在 Postgres 数据库中有一个分层表 例如category 结构很简单 如下所示 id parent id name 1 null A 2 null B 3 1 A1 4 3 A1a 5 3 A1b 6 2 B1 7 2 B2 我需
  • 当我需要其他内容时,BASH 脚本正在等待

    我的 bash 脚本需要一些帮助 bin bash zenity list title Select Server text Select the server to start radiolist column column Server
  • 如何收集实时推文? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何使用 Ruby 收集实时推文并将
  • Wicket 1.5(.2) 中的 url 更改时组件未重新加载?

    我第一次使用以下 URL 导航到我的应用程序 主页 0 用户 x 在调试模式下 我看到 wicket 很好地实例化了我的面板等 显然 如果我将 URL 更改为 主页 0 用户 y 那么什么也没有发生 面板不会重新初始化 对于新用户 gt 用
  • React 组件声明中“导出”的目的是什么?

    在 React ES6 中 为什么我有时看到这个吗 class Hello extends React Component 有时this export class Hello extends React Component 有何意义expo
  • 如何在protobuf中定义枚举的值和id? (原始java客户端)

    我对 protobuf 的使用很陌生 我计划编写带有枚举的 protobuf def 有什么方法可以在其中提供 id 值和描述 编译后我希望生成的枚举应该与下面的示例等效 enum Sample W 0 W P 0 P C 0 C B 0
  • Rails + devise:尝试删除用户帐户

    当我尝试在 Rails 应用程序中删除我的帐户时 我得到 没有路由匹配 users My View p We hate to see you go p 我的路线 user registration POST users format act
  • 如何为不同的根目录配置 xampp Web 服务器

    Web 目录是应用程序的所有公共文件和静态文件的所在地 包括图像 样式表和 JavaScript 文件 这也是前端控制器居住的地方 所以问题是当我安装并设置 xampp 时我的 web 目录是 xampp htdocs 我想将其设置为 xa
  • 将现有文件添加到不同的 Visual Studio 2010 项目

    是否可以将文件添加到位于不同目录中的 Visual Studio 项目中 但是将文件保留在这些目录中并在更新项目中的文件时更新这些文件 当我将现有文件添加到项目中时 它所做的只是将它们复制到项目中 然后更新复制的文件 而不是原始文件 有什么
  • 在脚本模块标记中使用 import 语句中的函数

    我正在尝试使用createPopup我使用导入的函数import我的脚本标签中的函数 但是 我总是收到错误消息 指出函数未定义 Uncaught ReferenceError createPopup is not defined 这是我的代
  • Xamarin Forms 自定义主题不起作用

    我有一个使用 Xamarin Forms 2 0 的 Android 应用程序 我制作了一个自定义主题来设置一些颜色 我创建了这些文件 资源 值 styles xml AndroidResource
  • Numpy dtype - 数据类型不理解

    我有一个数据框 我正在查看与每列关联的数据类型 当我跑步时 In 23 df dtype descr Out 24 u date
  • Ruby 中具有前瞻功能的正则表达式

    我当前的正则表达式之争是替换字符串中数字之前的所有逗号 然后 正则表达式必须忽略所有以下逗号 我已经在 rubular 上折腾了大约一个小时 但似乎没有什么效果 测试字符串 this is a sentence33 Here is anot
  • Contiki 无线编程

    我正在通过一个项目开始在天空微粒上使用 Contiki 我现在正在尝试让无线编程正常工作 我一直在查看 example sky shell exec 和 apps shell 我觉得我需要通过 sky shell exec 和可能的 tes
  • 服务器发送事件和浏览器限制

    我有一个监听服务器发送事件的 Web 应用程序 当我在打开多个窗口的情况下进行工作和测试时 事情不起作用 我多次撞到头 朝错误的方向看 最终 我意识到问题出在并发连接上 然而 我测试的数量非常有限 即使我在 Apache 上运行测试 我知道
  • 在 Python 2.7.3 / Raspberry Pi 中使用特殊字符取消转义 HTML

    我被困在这里试图取消转义 HTML 特殊字符 有问题的文本是 Rudimental amp Emeli Sand 应该转换为Rudimental 和 Emeli Sand 文本通过 WGET 下载 在 python 之外 要对此进行测试 请