python怎么将字符实体转化_在Python中将html实体转换为ascii

下面是一个完整的实现,它还处理unicode html实体。你可能会发现它很有用。

它返回一个不是ascii的unicode字符串,但是如果您想要纯ascii,您可以修改替换操作,以便将实体替换为空字符串。def convert_html_entities(s):

matches = re.findall("\d+;", s)

if len(matches) > 0:

hits = set(matches)

for hit in hits:

name = hit[2:-1]

try:

entnum = int(name)

s = s.replace(hit, unichr(entnum))

except ValueError:

pass

matches = re.findall("[xX][0-9a-fA-F]+;", s)

if len(matches) > 0:

hits = set(matches)

for hit in hits:

hex = hit[3:-1]

try:

entnum = int(hex, 16)

s = s.replace(hit, unichr(entnum))

except ValueError:

pass

matches = re.findall("&\w+;", s)

hits = set(matches)

amp = "&"

if amp in hits:

hits.remove(amp)

for hit in hits:

name = hit[1:-1]

if htmlentitydefs.name2codepoint.has_key(name):

s = s.replace(hit, unichr(htmlentitydefs.name2codepoint[name]))

s = s.replace(amp, "&")

return s

编辑:为十六进制代码添加匹配。我用这个已经有一段时间了,遇到了我的第一个情况,是一个单引号/撇号。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值