html解析中遇到的&#开头的unicode编码字符串的处理和转换 - Python

lxml库处理网页时遇到的,写个转换程序用用。
注:ASCII转unicode和中文转unicode是两个东西(起码在unicode在线转换网站上这两个不同),虽然说是中文,其实输入英文字母也没问题(表述可能不够准确,但大概是那么个意思)。

原理

常见的unicode编码格式如下:

\u670d\u52a1\u5668

如果换成&#开头的格式如下:

服务器

其实这两个是同一个东西,只是开头和进制不同

十六进制十进制unicode转中文
670d26381
52a121153
566822120

代码

测试代码
print(ord('服'))
print(ord('务'))
print(ord('器'))

# 控制台打印
# 26381
# 21153
# 22120

print(chr(26381))
print(chr(21153))
print(chr(22120))

# 控制台打印
# 服
# 务
# 器

转换代码

中文转&#格式unicode编码字符串
# 输入中文,输出str类型的&#开头的unicode编码数据
def zh2uni(zhDat):
    rDat = ""
    for n in zhDat:
        rDat = rDat + '&#' + str(ord(n)) + ';'
    
    return rDat

print(zh2uni('服务器'))

# 控制台打印
# 服务器
&#格式unicode编码字符串转中文
def uni2zh(uniDat):
    rDat = ''
    while True:
        if len(uniDat) == 0:
            break
        rDat = rDat + chr(int(uniDat[2:7]))
        uniDat = uniDat[8:]
    return rDat

print(uni2zh('服务器'))

# 控制台打印
# 服务器
腾讯云活动
最后修改:2022 年 04 月 09 日
如果觉得我的文章对你有用,请随意赞赏

发表评论
使用cookie技术保留您的个人信息以便您下次快速评论,继续评论表示您已同意该条款

🎲