最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python使用中文正則表達(dá)式匹配指定中文字符串的方法示例

 更新時(shí)間:2017年01月20日 09:08:21   作者:雪峰流云  
這篇文章主要介紹了Python使用中文正則表達(dá)式匹配指定中文字符串的方法,結(jié)合實(shí)例形式分析了Python正則匹配及字符編碼相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Python使用中文正則表達(dá)式匹配指定中文字符串的方法。分享給大家供大家參考,具體如下:

業(yè)務(wù)場景:

從中文字句中匹配出指定的中文子字符串 .這樣的情況我在工作中遇到非常多, 特梳理總結(jié)如下.

難點(diǎn):

處理GBK和utf8之類的字符編碼, 同時(shí)正則匹配Pattern中包含漢字,要漢字正常發(fā)揮作用,必須非常謹(jǐn)慎.推薦最好統(tǒng)一為utf8編碼,如果不是這種最優(yōu)情況,也有酌情處理.

往往一個(gè)具有普適性的正則表達(dá)式會(huì)簡化程序和代碼的處理,使過程簡潔和事半功倍,這往往是高手和菜鳥最顯著的差別。

示例一:

從QQ純真數(shù)據(jù)庫中解析出省市縣等特定詞語,這里的正則表達(dá)式基本能夠滿足業(yè)務(wù)場景,懶惰匹配?非常必要,因?yàn)樘幚聿缓?,?huì)得不到我們想要的效果。個(gè)中妙處,還請各位看官自己琢磨,我這里只點(diǎn)到為止!
代碼如下:

#!/usr/bin/env python
#encoding: utf-8
#description: 從字符串中提取省市縣等名稱,用于從純真庫中解析解析地理數(shù)據(jù)
import re
import sys
reload(sys)
sys.setdefaultencoding('utf8')
#匹配規(guī)則必須含有u,可以沒有r
#這里第一個(gè)分組的問號(hào)是懶惰匹配,必須這么做
PATTERN = \
ur'([\u4e00-\u9fa5]{2,5}?(?:省|自治區(qū)|市))([\u4e00-\u9fa5]{2,7}?(?:市|區(qū)|縣|州)){0,1}([\u4e00-\u9fa5]{2,7}?(?:市|區(qū)|縣)){0,1}'
data_list = ['北京市', '陜西省西安市雁塔區(qū)', '西班牙', '北京市海淀區(qū)', '黑龍江省佳木斯市湯原縣', '內(nèi)蒙古自治區(qū)赤峰市',
'貴州省黔南州貴定縣', '新疆維吾爾自治區(qū)伊犁州奎屯市']
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

運(yùn)行截圖

示例二:

從ip138中獲取指定ip的地理位置等信息。

ip138是我們?nèi)粘J褂幂^多的ip查詢網(wǎng)站,我為了獲取每個(gè)ip對應(yīng)的isp信息,需要查詢這個(gè)頁面

我在網(wǎng)上搜索了很久,沒有找到ip138返回json之類的接口,只能以這種方式查詢,那么我們不可避免地需要解析出上圖中紅框標(biāo)注的isp信息。如果使用DOM解析指定div標(biāo)簽之類的常規(guī)思路恐怕不太湊效,更簡捷的方式是使用中文正則匹配,直接從返回的html中得到“本站主數(shù)據(jù):”那部分的信息。

下面是我摸索的代碼

#!/usr/bin/env python
#encoding: utf-8
#date: 2016-03-31
#note: 測試中遇到的問題,請求指定的鏈接會(huì)有超時(shí)現(xiàn)象,可以多請求幾次
import requests, re
import sys
reload(sys)
sys.setdefaultencoding('utf8')
IP138_API = 'http://www.ip138.com/ips138.asp?ip='
PATTERN = ur'<li>本站主數(shù)據(jù):(.*?)</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編碼,不能在后面再轉(zhuǎn)換為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款非常方便的正則表達(dá)式工具供大家參考使用:

JavaScript正則表達(dá)式在線測試工具:
http://tools.jb51.net/regex/javascript

正則表達(dá)式在線生成工具:
http://tools.jb51.net/regex/create_reg

更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python正則表達(dá)式用法總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • python 代碼運(yùn)行時(shí)間獲取方式詳解

    python 代碼運(yùn)行時(shí)間獲取方式詳解

    這篇文章主要介紹了python 代碼運(yùn)行時(shí)間獲取方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Python之文字轉(zhuǎn)圖片方法

    Python之文字轉(zhuǎn)圖片方法

    今天小編就為大家分享一篇Python之文字轉(zhuǎn)圖片方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Python?設(shè)計(jì)模式中的創(chuàng)建型建造者模式

    Python?設(shè)計(jì)模式中的創(chuàng)建型建造者模式

    本文介紹Python設(shè)計(jì)模式中的創(chuàng)建型建造者模式,其表現(xiàn)為復(fù)雜對象的創(chuàng)建與表現(xiàn)相分離,這樣,同一個(gè)過程就有不同的表現(xiàn),想要?jiǎng)?chuàng)建一個(gè)由多個(gè)部分組成的對象,而且它的構(gòu)成需要一步接一步的完成。只有當(dāng)各個(gè)部分都完成了,這個(gè)對象才完整,下文相關(guān)自來哦,需要的朋友可以參考下
    2022-02-02
  • Tensorflow讀取并輸出已保存模型的權(quán)重?cái)?shù)值方式

    Tensorflow讀取并輸出已保存模型的權(quán)重?cái)?shù)值方式

    今天小編就為大家分享一篇Tensorflow讀取并輸出已保存模型的權(quán)重?cái)?shù)值方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看不看
    2020-01-01
  • Python import與from import使用和區(qū)別解讀

    Python import與from import使用和區(qū)別解讀

    Python程序可以調(diào)用一組基本的函數(shù)(即內(nèi)建函數(shù)),比如print()、input()和len()等函數(shù)。接下來通過本文給大家介紹Python import與from import使用及區(qū)別介紹,感興趣的朋友一起看看吧
    2021-09-09
  • Python實(shí)現(xiàn)多維數(shù)據(jù)分析的示例詳解

    Python實(shí)現(xiàn)多維數(shù)據(jù)分析的示例詳解

    多維數(shù)據(jù)分析是對數(shù)據(jù)的信息分析,它考慮了許多關(guān)系,這篇文章主要為大家詳細(xì)介紹了一些使用Python分析多維/多變量數(shù)據(jù)的基本技術(shù),希望對大家有所幫助
    2023-11-11
  • python實(shí)現(xiàn)socket+threading處理多連接的方法

    python實(shí)現(xiàn)socket+threading處理多連接的方法

    今天小編就為大家分享一篇python實(shí)現(xiàn)socket+threading處理多連接的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Python圖像分割之均勻性度量法分析

    Python圖像分割之均勻性度量法分析

    均勻性度量圖像分割是圖像像素分割的一種方法,當(dāng)然還有其他很多的方法。本文將主要介紹下其原理和實(shí)現(xiàn)代碼,感興趣的小伙伴可以學(xué)習(xí)一下
    2021-12-12
  • python matplotlib坐標(biāo)軸設(shè)置的方法

    python matplotlib坐標(biāo)軸設(shè)置的方法

    本篇文章主要介紹了python matplotlib坐標(biāo)軸設(shè)置的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-12-12
  • Django 聯(lián)表查詢操作方法

    Django 聯(lián)表查詢操作方法

    作為一個(gè)django使用的新手,在做練手項(xiàng)目中對聯(lián)表查詢感覺比較生疏,最近兩天整理了一些連表查詢應(yīng)用場景和使用方法以及無法使用django中ORM操作的原生查詢,對Django 聯(lián)表查詢操作感興趣的朋友跟隨小編一起看看吧
    2023-09-09

最新評(píng)論

宣汉县| 大关县| 平度市| 宕昌县| 滦平县| 新宾| 和顺县| 卓资县| 开平市| 依兰县| 乐业县| 嵩明县| 馆陶县| 延寿县| 阿拉善左旗| 台北市| 体育| 广安市| 三明市| 綦江县| 武乡县| 郎溪县| 乳源| 高碑店市| 怀仁县| 镇江市| 靖江市| 高陵县| 桦南县| 漠河县| 屏东市| 越西县| 闸北区| 宽城| 孝感市| 绍兴市| 牙克石市| 华亭县| 镇安县| 祁阳县| 桑日县|