免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
21 [报告]
发表于 2010-04-04 10:19 |只看该作者
有必要的,读取到的数据肯定是ansi,不encode的话,unicode替换进ansi字符窜,直接爆UnicodeDecodeError.......当然,也可以先把读入数据转成unicode........

论坛徽章:
0
22 [报告]
发表于 2010-04-04 10:25 |只看该作者
对于’29256‘这个字符串ansi编码和  unicode编码有什么不同么?

论坛徽章:
0
23 [报告]
发表于 2010-04-04 10:43 |只看该作者
本帖最后由 3227049 于 2010-04-04 10:44 编辑

正常的应用场景哪会那么简单

  1. #coding:utf-8


  2. html="版=&# 29256;=&# x7248;".replace(" ","");

  3. import re
  4. _=re.compile('&#(x)?([0-9a-fA-F]+);')
  5. to_str1=lambda s,charset='utf-8':_.sub(lambda result:unichr(int(result.group(2),result.group(1)=='x' and 16 or 10)).encode(charset) ,s)
  6. to_str2=lambda s,charset='utf-8':_.sub(lambda result:unichr(int(result.group(2),result.group(1)=='x' and 16 or 10)) ,s if type(s) is unicode else s.decode(charset))
  7. to_str3=lambda s:_.sub(lambda result:unichr(int(result.group(2),result.group(1)=='x' and 16 or 10)),s)


  8. print 'to_str1',to_str1(html)

  9. print '*'*80


  10. print 'to_str2',to_str2(html)

  11. print '*'*80


  12. print 'to_str3',to_str3(html)

  13. print '*'*80
复制代码

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

我服了   应用场景简单不简单跟咱们说的这个问题有关系么?
  1. #coding=utf-8
  2. html="版=&# 29256;=&# x7248;".replace(" ","");
  3. print  unichr(int(html[6:11]))
  4. print  unichr(int(html[16:20],16))
复制代码

论坛徽章:
0
25 [报告]
发表于 2010-04-04 11:10 |只看该作者
我也服了,楼主要的是整句的自动替换,不是手工单字转换....

他的需求是类似cu的dz发帖一样

输入 版=&#(防转)29256;=&#(防转)x7248;

得到 版=版=版


是个字符窜处理问题,不是个字符窜编码问题,而且转化过程中必须encode成ansi或者先整句decode成unicode,不然会出现我上一个例子里to_str3里爆UnicodeDecodeError的现象

论坛徽章:
0
26 [报告]
发表于 2010-04-04 11:15 |只看该作者
我也服了,楼主要的是整句的自动替换,不是手工单字转换....

他的需求是类似cu的dz发帖一样

输入 版= ...
3227049 发表于 2010-04-04 11:10



下面这句话是你说的那个意思?我错了  你是大牛  。
网页上面类似这种的转义 python有函数可以支持吗?

论坛徽章:
0
27 [报告]
发表于 2010-04-04 11:31 |只看该作者
本帖最后由 3227049 于 2010-04-04 11:37 编辑
下面这句话是你说的那个意思?我错了  你是大牛  。
luffy.deng 发表于 2010-04-04 11:15


这句话有什么问题么?譬如php,直接用原生函数mb_convert_encoding里指定参数HTML-ENTITIES就能转义了,楼主不熟悉python问是否有函数有问题么?他熟悉了还用问么?


另外,楼主问的是

  1. & #x6770;& #x514b;
复制代码
网页上面类似这种的转义 python有函数可以支持吗?

不是


  1. 0x6770
  2. 0x514b
复制代码
网页上面类似这种的转义 python有函数可以支持吗?

或者

  1. & #x6770;
  2. & #x514b;
复制代码
网页上面类似这种的转义 python有函数可以支持吗?


硕牛筒子,引用的时候请别选择性无视半句

论坛徽章:
0
28 [报告]
发表于 2010-04-04 13:23 |只看该作者
本帖最后由 luffy.deng 于 2010-04-04 15:30 编辑

回复 27# 3227049

python字符串转义不是告诉你了是这个格式u\u6670,对于html里的#x6770这样的字符串,在二楼pywugw 也告诉你有这样的函数 unichr() 你这半天在哪儿叨叨些啥?非得给你个现成的mb_convert_encoding函数你才会用?
且转化过程中必须encode成ansi或者先整句decode成unicode
没有encode照样正常输出。你能告诉我对于‘#x6770’
这样的一个字符串ansi编码  和encode编码有什么不同么?不都是‘0x230x780x360x370x370x30’
  1. #coding=utf-8
  2. s=''& #x6770;& #x514b;''
  3. def mb_convert_encoding(s):
  4.    return u''.join(unichr(int(i[3:],16)) for  i in  s.strip(';').split(';'))
  5. print mb_convert_encoding(s)
复制代码
pywugw 发表于 2010-04-02 12:58

论坛徽章:
0
29 [报告]
发表于 2010-04-04 15:21 |只看该作者
本帖最后由 3227049 于 2010-04-04 15:25 编辑
回复  3227049

python字符串转义不是告诉你了是这个格式u\u6670,对于html里的#x6770这样的字符串,在二 ...
luffy.deng 发表于 2010-04-04 13:23



我真是不想回的,但是.......

  1. >>> def mb_convert_encoding(s):...    return u''.join(unichr(int(i[3:],16)) for  i in  s.strip(';').split(';'))
  2. ...
  3. >>>
  4. >>> mb_convert_encoding(";;;;")
  5. Traceback (most recent call last):
  6.   File "<stdin>", line 1, in <module>
  7.   File "<stdin>", line 2, in mb_convert_encoding
  8.   File "<stdin>", line 2, in <genexpr>
  9. ValueError: invalid literal for int() with base 16: ''

复制代码
你这个函数太强大了


另外,我认为,你与其在这里一边不停的纠缠些和楼主问题牛头不对马嘴的回答,一边兼职bug制造者的职业,还不如去干你在沙发那个
什么意思?
luffy.deng 发表于 2010-04-02 12:19
有前途的工作

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

回复 29# 3227049

真是懒的跟你说了mb_convert_encoding只是个示例性的  仅仅是为了说明问题,还用你告诉我 ‘;;’ 会是空字符?自己加点检查很难么?
  1. 且转化过程中必须encode成ansi或者先整句decode成unicode
复制代码
你要是不说这种狗屁误人子弟的话 才懒得跟你说。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP