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

2022-06-15 18:01:19 浏览数 (1)

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

原理

常见的unicode编码格式如下:

代码语言:javascript复制
u670du52a1u5668

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

代码语言:javascript复制
服务器

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

十六进制

十进制

unicode转中文

670d

26381

52a1

21153

5668

22120

代码

测试代码

代码语言:javascript复制
print(ord('服'))
print(ord('务'))
print(ord('器'))

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

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

# 控制台打印
# 服
# 务
# 器
转换代码

中文转&#格式unicode编码字符串

代码语言:javascript复制
# 输入中文,输出str类型的&#开头的unicode编码数据
def zh2uni(zhDat):
    rDat = ""
    for n in zhDat:
        rDat = rDat   '&#'   str(ord(n))   ';'
    
    return rDat

print(zh2uni('服务器'))

# 控制台打印
# 服务器

&#格式unicode编码字符串转中文

代码语言:javascript复制
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('服务器'))

# 控制台打印
# 服务器

0 人点赞