免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2465 | 回复: 3

python3怎么转换html中版本这种字符实体到中文 [复制链接]

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-06-12 06:20:00
发表于 2017-04-03 15:07 |显示全部楼层
本帖最后由 yakczh_cu 于 2017-04-04 09:37 编辑

测试页面

<!DOCTYPE HTML>
<html  >
<head>
  <title></title>
  
</head>
<body>
<table border="1" cellpadding="3">
<tr>
    <td><b>Your copy:</b></td>
    <td>&#29256;&#26412;4.2 build 1020</td>
</tr>
<tr>
    <td><b>Latest version:</b></td>
    <td>Version 4.2 build 1146 *</td>
</tr>
</table>



  1. import html

  2. from urllib.request import Request,urlopen

  3. url = 'http://localhost/test.html'

  4. req = Request(url, None)    
  5. resp = urlopen(req)

  6. #print(resp.read())
  7. print(html.unescape(resp.read().decode()) )

复制代码

 
用unescape 还是没变化

页面中的&需要重新手工输一下,因为发出来会转义



</body>
</html>
                                         

       

论坛徽章:
0
发表于 2017-04-03 16:25 |显示全部楼层
实体里的'&'符号是半角的,你这里用的是全角的,当然转换不过来。

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-06-12 06:20:00
发表于 2017-04-04 09:39 |显示全部楼层
回复 2# inpool


输入全角是因为原样会自己转义,看不出来是字符实体,我还特意在最后说&符号要自己输一下,这么说还看不明白?

                       
                                                                                       
       

论坛徽章:
0
发表于 2017-04-04 11:59 |显示全部楼层
python3.4 实测如果是半角字符你写的没错。如果全角要转译的话必须自己写。
  1. import re

  2. s = '<td>&#29256;&#26412;4.2 build 1020</td>'

  3. regex = re.compile('&#(\d+);')

  4. matchs = regex.findall(s)

  5. for i in matchs:
  6.     s = s.replace('&#%s;' % i, chr(int(i)))

  7. print(s)
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP