免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7853 | 回复: 17
打印 上一主题 下一主题

python正则表达式匹配中文 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-04-21 11:10 |只看该作者 |倒序浏览
有以下文本信息,要从中匹配到联系人、职位、电话、移动电话,现在是匹配不到中文,找高手赐教,正则表达式要如何写:

<div class="m-header"><h3>联系方式</h3></div>
                <div class="m-content">
                                   
            
            

                    <div><a href="http://me./szchunhuik.html" class="membername" target="_blank">钟小春</a>&nbsp;先生&nbsp;(工程部 经理)
                                                <a data-alitalk="{id: '春辉精密',type:'athena_alitalk_zban'}" target="_blank" href="http://amos.alicdn.com/getcid.aw?v=3&uid=春辉精密&site=cnalichn&groupid=0&s=1&charset=gbk">
                                       
                        </a>
            </div>
                        <dl>
                <dt>电&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;话:</dt>
                <dd>86 0755 23079683</dd>
            </dl>
                                   
                        <dl class="m-mobilephone" data-need-not-login="true" data-no="13923818521">
                <dt>移动电话:</dt>
                <dd class="mobile-number">                        13923818521
                                    </dd>
            </dl>
                                    <dl>
                <dt>传&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;真:</dt>
                <dd>86 0755 29759855</dd>
            </dl>

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
2 [报告]
发表于 2014-04-21 13:29 |只看该作者
加上 re.UNICODE 试试.

论坛徽章:
0
3 [报告]
发表于 2014-04-21 14:22 |只看该作者
q1208c 发表于 2014-04-21 13:29
加上 re.UNICODE 试试.


在哪里加?

论坛徽章:
0
4 [报告]
发表于 2014-04-21 15:29 |只看该作者
英文能匹配到,中文匹配不到...

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
5 [报告]
发表于 2014-04-21 16:07 |只看该作者
回复 3# howema


re.compile('xxxx', re.UNICODE)

   

论坛徽章:
0
6 [报告]
发表于 2014-04-21 17:42 |只看该作者
q1208c 发表于 2014-04-21 16:07
回复 3# howema


加了还是匹配不到汉字
得到的结果为[]

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
7 [报告]
发表于 2014-04-21 18:44 |只看该作者
回复 6# howema

贴上你的代码段 和 数据 来看看
   

论坛徽章:
0
8 [报告]
发表于 2014-04-22 00:36 |只看该作者
re表达式应该和被搜索字符串编码相同。如都是unicode,或者都是utf8

>>> unicode_s = u"<h3>联系方式</h3>"
>>> str_s = "<h3>联系方式</h3>"
>>> unicode_s
u'<h3>\u8054\u7cfb\u65b9\u5f0f</h3>'
>>> str_s
'<h3>\xe8\x81\x94\xe7\xb3\xbb\xe6\x96\xb9\xe5\xbc\x8f</h3>'
>>> import re
>>> re.search('联系', str_s)
<_sre.SRE_Match object at 0x982da30>
>>> re.search('联系', unicode_s)  # 没找到
>>> re.search(u'联系', unicode_s)
<_sre.SRE_Match object at 0x9ab4170>

论坛徽章:
0
9 [报告]
发表于 2014-04-22 13:40 |只看该作者
代码如下:

def getInfoFromPage(pattern,page):
    p = re.compile(pattern,re.UNICODE)
    result = p.findall(page)
    print result
    return result


pat = "手机版"#任何网页上的中文
url = 'http://detail.1688.com/offer/42776544.html'
page = urllib2.urlopen(url)
data = page.read()
result = getInfoFromPage(pat,data)

得到的结果都是[]

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
10 [报告]
发表于 2014-04-22 13:51 |只看该作者
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-

  3. ## set the file encoding as utf-8
  4. import sys
  5. reload(sys)
  6. sys.setdefaultencoding('utf-8')

  7. import urllib2
  8. import re


  9. def getInfoFromPage(pattern,page):
  10.     p = re.compile(pattern,re.UNICODE)
  11.     result = p.findall(page)
  12.     print result
  13.     return result


  14. pat = "手机版"#任何网页上的中文
  15. url = 'http://detail.1688.com/offer/42776544.html'
  16. page = urllib2.urlopen(url)
  17. data = page.read().decode('gbk').encode('utf-8')
  18. print data
  19. result = getInfoFromPage(pat,data)
复制代码
改成这样就行了. 原来页面的编码是GBK的.

回复 9# howema


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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP