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

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

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

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

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

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

難點(diǎn):

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

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

示例一:

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

#!/usr/bin/env python
#encoding: utf-8
#description: 從字符串中提取省市縣等名稱,用于從純真庫中解析解析地理數(shù)據(jù)
import re
import sys
reload(sys)
sys.setdefaultencoding('utf8')
#匹配規(guī)則必須含有u,可以沒有r
#這里第一個分組的問號是懶惰匹配,必須這么做
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)站,我為了獲取每個ip對應(yīng)的isp信息,需要查詢這個頁面

我在網(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: 測試中遇到的問題,請求指定的鏈接會有超時現(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è)計有所幫助。

相關(guān)文章

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

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

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

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

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

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

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

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

    今天小編就為大家分享一篇Tensorflow讀取并輸出已保存模型的權(quán)重數(shù)值方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看不看
    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處理多連接的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    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è)置的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • Django 聯(lián)表查詢操作方法

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

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

最新評論

红安县| 法库县| 广元市| 巴马| 彭阳县| 宝山区| 庐江县| 普陀区| 宜黄县| 朝阳县| 定襄县| 堆龙德庆县| 平昌县| 邹平县| 本溪| 乌鲁木齐市| 翁牛特旗| 尖扎县| 鄯善县| 北安市| 巫溪县| 图木舒克市| 汉源县| 米脂县| 婺源县| 营山县| 康保县| 福建省| 铜梁县| 商洛市| 桑植县| 柳江县| 长宁县| 西宁市| 安溪县| 安丘市| 丰顺县| 枝江市| 巨野县| 淳安县| 徐水县|