国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

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

2020-02-23 04:19:00
字體:
來源:轉載
供稿:網友

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

業務場景:

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

難點:

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

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

示例一:

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

#!/usr/bin/env python#encoding: utf-8#description: 從字符串中提取省市縣等名稱,用于從純真庫中解析解析地理數據import reimport sysreload(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中得到“本站主數據:”那部分的信息。

下面是我摸索的代碼

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 连州市| 中牟县| 安岳县| 娄底市| 安岳县| 大同县| 武汉市| 淮安市| 扶沟县| 交城县| 图木舒克市| 依安县| 西宁市| 杂多县| 托里县| 天峨县| 德昌县| 汝城县| 彭泽县| 兴隆县| 仁怀市| 明水县| 长顺县| 明溪县| 凉山| 田东县| 禹州市| 故城县| 汝南县| 类乌齐县| 安远县| 禄丰县| 深圳市| 怀宁县| 望奎县| 晋宁县| 达尔| 丰镇市| 崇信县| 衢州市| 壤塘县|