使用 &#x**; 的 Python 字符串编码

标签 python html

我有一个(非 python)脚本以某种方式对字符串进行编码,并且我需要一个 python 脚本来使用相同的编码方法。

原始字符串是 Hügelkultur,原始脚本将其转换为 Hügelkultur

现在我的 python 脚本没有进行任何类型的编码,输出文件显示 Hügelkultur

如果我运行这个脚本:

string = "Hügelkultur"
string = string.encode()
print(string)

它输出H\xc3\xbcgelkultur

我想如何对字符串进行编码才能得到与原始字符串匹配的字符串?

最佳答案

我不知道 stdlib 编码器可以获取该输出,但是带有 xmlcharrefreplace 的 ascii 编码将帮助您完成大部分工作:

>>> "Hügelkultur".encode("ascii", errors="xmlcharrefreplace")
b'Hügelkultur'

#xFC 类似于 #252,因为 0xfc == 252,HTML 解码器应该对这两种形式都满意。但是,如果您确实需要精确样式匹配,也许只需编写一个简单的函数来手动执行此操作:

>>> def convert(s):
...     chars = []
...     for char in s:
...         if char.isascii():
...             chars.append(char)
...         else:
...             chars.append(f"&#x{ord(c):X};")
...     return "".join(chars)
...
>>> convert("Hügelkultur")
'Hügelkultur'

为了后代的缘故,以另一种方式返回是 html unescape:

>>> import html
>>> html.unescape('Hügelkultur')
'Hügelkultur'

关于使用 &#x**; 的 Python 字符串编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57677341/

相关文章:

python - 嵌套列表理解以展平嵌套列表

javascript - jquery/javascript/html/css 中调用的弹出框/吸尘器框是什么

php - 如何在 Python 和 PHP 之间传输数据

Python:如何将从列表中提取的数据保存在元组(名称,num1,num2)中?

html - 如何将我的网上商店的菜单居中?

java - Htmlunit 通过单击按钮跳过页面

html - 使用不同图像的选择时,css 和 html 中的翻转图像问题

iphone - 当 iPhone 方向从纵向变为横向时保留 HTML 字体大小

python - 使用 Bokeh 日期时间轴绘制周数

使用 Gmail 发送电子邮件的 Python 脚本