全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Python使用中文正则表达式匹配指定中文字符串的方法示例

本文实例讲述了Python使用中文正则表达式匹配指定中文字符串的方法。分享给大家供大家参考,具体如下:

业务场景:

从中文字句中匹配出指定的中文子字符串 .这样的情况我在工作中遇到非常多, 特梳理总结如下.

难点:

处理GBK和utf8之类的字符编码, 同时正则匹配Pattern中包含汉字,要汉字正常发挥作用,必须非常谨慎.推荐最好统一为utf8编码,如果不是这种最优情况,也有酌情处理.

往往一个具有普适性的正则表达式会简化程序和代码的处理,使过程简洁和事半功倍,这往往是高手和菜鸟最显著的差别。

示例一:

从QQ纯真数据库中解析出省市县等特定词语,这里的正则表达式基本能够满足业务场景,懒惰匹配?非常必要,因为处理不好,会得不到我们想要的效果。个中妙处,还请各位看官自己琢磨,我这里只点到为止!
代码如下:

#!/usr/bin/env python
#encoding: utf-8
#description: 从字符串中提取省市县等名称,用于从纯真库中解析解析地理数据
import re
import sys
reload(sys)
sys.setdefaultencoding('utf8')
#匹配规则必须含有u,可以没有r
#这里第一个分组的问号是懒惰匹配,必须这么做
PATTERN = \
ur'([\u4e00-\u9fa5]{2,5}?(?:省|自治区|市))([\u4e00-\u9fa5]{2,7}?(?:市|区|县|州)){0,1}([\u4e00-\u9fa5]{2,7}?(?:市|区|县)){0,1}'
data_list = ['北京市', '陕西省西安市雁塔区', '西班牙', '北京市海淀区', '黑龙江省佳木斯市汤原县', '内蒙古自治区赤峰市',
'贵州省黔南州贵定县', '新疆维吾尔自治区伊犁州奎屯市']
for data in data_list:
 data_utf8 = data.decode('utf8')
 print data_utf8
 country = data
 province = ''
 city = ''
 district = ''
 #pattern = re.compile(PATTERN3)
 pattern = re.compile(PATTERN)
 m = pattern.search(data_utf8)
 if not m:
  print country + '|||'
  continue
 #print m.group()
 country = '中国'
 if m.lastindex >= 1:
  province = m.group(1)
 if m.lastindex >= 2:
  city = m.group(2)
 if m.lastindex >= 3:
  district = m.group(3)
 out = '%s|%s|%s|%s' %(country, province, city, district)
 print out

运行截图

示例二:

从ip138中获取指定ip的地理位置等信息。

ip138是我们日常使用较多的ip查询网站,我为了获取每个ip对应的isp信息,需要查询这个页面

我在网上搜索了很久,没有找到ip138返回json之类的接口,只能以这种方式查询,那么我们不可避免地需要解析出上图中红框标注的isp信息。如果使用DOM解析指定div标签之类的常规思路恐怕不太凑效,更简捷的方式是使用中文正则匹配,直接从返回的html中得到“本站主数据:”那部分的信息。

下面是我摸索的代码

#!/usr/bin/env python
#encoding: utf-8
#date: 2016-03-31
#note: 测试中遇到的问题,请求指定的链接会有超时现象,可以多请求几次
import requests, re
import sys
reload(sys)
sys.setdefaultencoding('utf8')
IP138_API = 'http://www.ip138.com/ips138.asp?ip='
PATTERN = ur'<li>本站主数据:(.*?)</li>'
def query_api(url):
 data = ''
 r = requests.get(url)
 if r.status_code == 200:
  data = r.content
 return data
def parse_ip138(html):
 #只能是unicode编码,不能在后面再转换为utf-8,否则无法正则匹配上.
 html = unicode(html, 'gb2312')
 #html = unicode(html, 'gb2312').encode('utf-8')
 #print html
 pattern = re.compile(PATTERN)
 m = pattern.search(html)
 if m:
  print m.group(1)
 else:
  print 'regex match failed'
if __name__ == '__main__':
 url = IP138_API + '14.192.60.0'
 resp = query_api(url)
 if not resp:
  print 'no content'
 parse_ip138(resp)

下面是截图

PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:

JavaScript正则表达式在线测试工具:
http://tools./regex/javascript

正则表达式在线生成工具:
http://tools./regex/create_reg

更多关于Python相关内容可查看本站专题:《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。


# Python  # 中文  # 正则表达式  # 匹配  # 字符串  # python OpenCV的imread不能读取中文路径问题及解决  # Python OpenCV读取中文路径图像的方法  # python3+openCV 获取图片中文本区域的最小外接矩形实例  # Python OpenCV实现图片上输出中文  # python统计中文字符数量的两种方法  # 解决Python下json.loads()中文字符出错的问题  # Python判断中文字符串是否相等的实例  # Python实现简单截取中文字符串的方法  # python 解决OpenCV显示中文字符的方法汇总  # 奎屯市  # 北京市  # 佳木斯市  # 赤峰市  # 新疆维吾尔自治区  # 酌情处理  # 贵州省  # 贵定县  # 内蒙古自治区  # 汤原县  # 进阶  # 西安市  # 操作技巧  # 陕西省  # 也有  # 黑龙江省  # 会有  # 我在  # 菜鸟 


相关文章: 建站上市公司网站建设方案与SEO优化服务定制指南  广东专业制作网站有哪些,广东省能源集团有限公司官网?  如何配置WinSCP新建站点的密钥验证步骤?  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  如何在Windows环境下新建FTP站点并设置权限?  PHP正则匹配日期和时间(时间戳转换)的实例代码  建站主机默认首页配置指南:核心功能与访问路径优化  php json中文编码为null的解决办法  简单实现Android验证码  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  已有域名如何免费搭建网站?  上海网站制作开发公司,上海买房比较好的网站有哪些?  建站之星代理如何优化在线客服效率?  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  网站制作说明怎么写,简述网页设计的流程并说明原因?  高端智能建站公司优选:品牌定制与SEO优化一站式服务  中山网站推广排名,中山信息港登录入口?  如何快速使用云服务器搭建个人网站?  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  制作证书网站有哪些,全国城建培训中心证书查询官网?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  如何在阿里云通过域名搭建网站?  制作充值网站的软件,做人力招聘为什么要自己交端口钱?  如何在七牛云存储上搭建网站并设置自定义域名?  中山网站制作网页,中山新生登记系统登记流程?  深圳网站制作平台,深圳市做网站好的公司有哪些?  如何用5美元大硬盘VPS安全高效搭建个人网站?  如何通过.red域名打造高辨识度品牌网站?  Python lxml的etree和ElementTree有什么区别  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  高防服务器租用指南:配置选择与快速部署攻略  青浦网站制作公司有哪些,苹果官网发货地是哪里?  如何在云主机上快速搭建网站?  深圳网站制作案例,网页的相关名词有哪些?  广州商城建站系统开发成本与周期如何控制?  微信小程序 input输入框控件详解及实例(多种示例)  建站之星上传入口如何快速找到?  视频网站制作教程,怎么样制作优酷网的小视频?  如何快速查询网址的建站时间与历史轨迹?  全景视频制作网站有哪些,全景图怎么做成网页?  css网站制作参考文献有哪些,易聊怎么注册?  如何快速登录WAP自助建站平台?  北京营销型网站制作公司,可以用python做一个营销推广网站吗?  怎么将XML数据可视化 D3.js加载XML  ,sp开头的版面叫什么?  网站插件制作软件免费下载,网页视频怎么下到本地插件?  相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  建站VPS选购需注意哪些关键参数? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。