前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >html解析中遇到的&#开头的unicode编码字符串的处理和转换 - Python

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

作者头像
kr
发布2022-06-15 18:01:19
发布2022-06-15 18:01:19
10.3K00
代码可运行
举报
文章被收录于专栏:个人教程个人教程
运行总次数:0
代码可运行

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

原理

常见的unicode编码格式如下:

代码语言:javascript
代码运行次数:0
运行
复制
\u670d\u52a1\u5668

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

代码语言:javascript
代码运行次数:0
运行
复制
服务器

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

十六进制

十进制

unicode转中文

670d

26381

52a1

21153

5668

22120

代码

测试代码

代码语言:javascript
代码运行次数:0
运行
复制
print(ord('服'))
print(ord('务'))
print(ord('器'))

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

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

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

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

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

print(zh2uni('服务器'))

# 控制台打印
# 服务器

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

代码语言:javascript
代码运行次数:0
运行
复制
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 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原理
  • 代码
    • 转换代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档