免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: yihucha
打印 上一主题 下一主题

python 有处理unicode转义的函数吗? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-04-03 20:58 |只看该作者
a=['6770','514b']
print u''.join([unichr(int(i,16)) for i in a])

论坛徽章:
0
12 [报告]
发表于 2010-04-03 21:26 |只看该作者
楼主要转的是html实体,不是纯粹的unicode,你们两个在乱战啊。。。。

论坛徽章:
0
13 [报告]
发表于 2010-04-03 21:45 |只看该作者
什么实体不实体  从网页取得的36793这个字符串 转换成整数36793就是unicode码值,unichr(36793)就可得到码值代表的字符。

论坛徽章:
0
14 [报告]
发表于 2010-04-03 21:56 |只看该作者
回复 12# 3227049

你首先要搞清楚  u'\u6770'不等于网页html里提取的字符串 '0x6770'   。u'\u6770'等于十六制整数0x6770

论坛徽章:
0
15 [报告]
发表于 2010-04-03 22:13 |只看该作者
请问一下,如果是个变量名,前面怎么加u,怎么将它转变过来?

>>> a='\u6770\u514b'
>>> print u a
SyntaxError: invalid syntax
>>> a='\u6770\u514b'
wqjwftcaqr 发表于 2010-04-03 20:20

说句多余的话  这种问题都能问出来  我这是  ‘唉’。

论坛徽章:
0
16 [报告]
发表于 2010-04-03 22:26 |只看该作者
本帖最后由 3227049 于 2010-04-03 22:35 编辑

哎,你看清楚啊,楼主问的是&#x[0-9a-f]+;,&#\d+;这种html实体和ansi的转化,html实体可以在不指定编码的情况下防止乱码的出现,一般wml,excel里出现的比较多,像php之类的都有现成函数转化的,具体应用场景你用opera看看cu的wap页源代码就清楚了。。。。虽然html实体也是基于unicode的实现,但是楼主问的并不是unicode和ansi的转化。。。。这个,你回答的东西和楼主要问的东西。。有点鸡同鸭讲啊。。

论坛徽章:
0
17 [报告]
发表于 2010-04-04 06:48 |只看该作者
这种html实体和ansi的转化,html实体可以在不指定编码的情况下防止乱码的出现,一般wml,excel里出现的比较多,像php之类的都有现成函数转化的,具体应用场景你用opera看看cu的wap页源代码就清楚了。。。。虽然html实体也是基于unicode的实现,但是楼主问的并不是 unicode和ansi的转化
3227049 发表于 2010-04-03 22:26

我败了。一个hex字符串到unicode字符的转换能扯出这么多东西,什么html实体 浏览器都出来了。html里提取出来hex字符串 '0x6770' 怎么得出对应的unicode字符跟编码有毛关系?

论坛徽章:
0
18 [报告]
发表于 2010-04-04 09:52 |只看该作者
我败了。一个hex字符串到unicode字符的转换能扯出这么多东西,什么html实体 浏览器都出来了。html里提取出 ...
luffy.deng 发表于 2010-04-04 06:48



苦笑,如果楼主问的是['6770','514b']怎么转成unicode,那么你说的是没错

但是楼主正文问的是
&#(避免自动转化)x6770;&#(避免自动转化)x514b;
怎么转化成ansi字符窜,说穿了是一个字符窜处理问题,或者说是一个正则问题

你强调的int<->unicode和楼主正文里问的问题根本完全不相干

论坛徽章:
0
19 [报告]
发表于 2010-04-04 10:00 |只看该作者
本帖最后由 luffy.deng 于 2010-04-04 10:09 编辑

我的妈呀   你建个html文件  里面写上‘&#29256’ 浏览器会负责转义为  版。
但是python从html源文件里读出'29256'这个字符串是不会被转义的,对于python来说这是一个字符串 等价于 5个整数序列。python字符串转义你要在编码时指定 u\u29256, 就像你在html编码时指定&#29256那样。这跟html源文件是gbk  还是utf8或者其他编码无关。你写的
  1. unichr(int(result.group(2),result.group(1)=='x' and 16 or 10)).encode(charset)
复制代码
encode是没有必要的,只要你能从html源文件提取出 ‘29256’这个字符串  转换成整数 29256 查unicode码表就可以得到 ‘版‘这个字。

论坛徽章:
0
20 [报告]
发表于 2010-04-04 10:18 |只看该作者
看这个html文件,楼主问的是假设这个html文件是用python从某网站上抓取的 进行处理的情况。

a.7z

127 Bytes, 下载次数: 11

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP