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

首頁 > 編程 > Python > 正文

Python使用正則表達式過濾或替換HTML標簽的方法詳解

2020-02-16 10:19:44
字體:
來源:轉載
供稿:網友

本文實例講述了Python使用正則表達式過濾或替換HTML標簽的方法。分享給大家供大家參考,具體如下:

python正則表達式關鍵內容:

python正則表達式轉義符:

. 匹配除換行符以外的任意字符
/w 匹配字母或數字或下劃線或漢字
/s 匹配任意的空白符
/d 匹配數字
/b 匹配單詞的開始或結束
^ 匹配字符串的開始
$ 匹配字符串的結束
/W 匹配任意不是字母,數字,下劃線,漢字的字符
/S 匹配任意不是空白符的字符
/D 匹配任意非數字的字符
/B 匹配不是單詞開頭或結束的位置
[^x] 匹配除了x以外的任意字符
[^aeiou] 匹配除了aeiou這幾個字母以外的任意字符

常用的python正則表達式限定符代碼/語法說明:

*重復零次或更多次
+重復一次或更多次
?重復零次或一次
{n}重復n次
{n,}重復n次或更多次
{n,m}重復n到m次
關于python正則表達式命名組:
命名組:(?P<name>.....)
這篇文章里面還提到了界定( 問號開頭,前向則有個'<'號,非則有個'!' 號 ):
前向界定 (?<=…)
后向界定 (?=…)
前向非界定 (?<!....)
后向非界定 (?!.....)

Python通過正則表達式去除(過濾)HTML標簽示例代碼

#-*- coding:utf-8 -*-import re##過濾HTML中的標簽# 將HTML中標簽等信息去掉# @param htmlstr HTML字符串.def filter_tags(htmlstr):  # 先過濾CDATA  re_cdata = re.compile("http://<!CDATA/[[>]∗///]>", re.I) #匹配CDATA  re_script = re.compile('</s*script[^>]*>[^<]*</s*//s*script/s*>', re.I) # Script  re_style = re.compile('</s*style[^>]*>[^<]*</s*//s*style/s*>', re.I) # style  re_br = re.compile('<br/s*?/?>') # 處理換行  re_h = re.compile('</?/w+[^>]*>') # HTML標簽  re_comment = re.compile('<!--[^>]*-->') # HTML注釋  s = re_cdata.sub('', htmlstr) # 去掉CDATA  s = re_script.sub('', s) # 去掉SCRIPT  s = re_style.sub('', s) # 去掉style  s = re_br.sub('/n', s) # 將br轉換為換行  s = re_h.sub('', s) # 去掉HTML 標簽  s = re_comment.sub('', s) # 去掉HTML注釋  # 去掉多余的空行  blank_line = re.compile('/n+')  s = blank_line.sub('/n', s)  s = replaceCharEntity(s) # 替換實體  return s##替換常用HTML字符實體.# 使用正常的字符替換HTML中特殊的字符實體.# 你可以添加新的實體字符到CHAR_ENTITIES中,處理更多HTML字符實體.# @param htmlstr HTML字符串.def replaceCharEntity(htmlstr):  CHAR_ENTITIES = {'nbsp': ' ', '160': ' ',           'lt': '<', '60': '<',           'gt': '>', '62': '>',           'amp': '&', '38': '&',           'quot': '"''"', '34': '"', }  re_charEntity = re.compile(r'&#?(?P<name>/w+);')  sz = re_charEntity.search(htmlstr)  while sz:    entity = sz.group() # entity全稱,如>    key = sz.group('name') # 去除&;后entity,如>為gt    try:      htmlstr = re_charEntity.sub(CHAR_ENTITIES[key], htmlstr, 1)      sz = re_charEntity.search(htmlstr)    except KeyError:      # 以空串代替      htmlstr = re_charEntity.sub('', htmlstr, 1)      sz = re_charEntity.search(htmlstr)  return htmlstrdef repalce(s, re_exp, repl_string):  return re_exp.sub(repl_string, s)if __name__ == '__main__':  s = file('test.html').read()  news = filter_tags(s)  print news            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宾阳县| 龙州县| 南召县| 津市市| 平舆县| 新昌县| 荔浦县| 隆安县| 红桥区| 满城县| 晋宁县| 都匀市| 水城县| 襄城县| 兰州市| 镇坪县| 盐池县| 清丰县| 房山区| 孝感市| 西城区| 正阳县| 亚东县| 淮滨县| 炉霍县| 昭苏县| 江源县| 庐江县| 潜江市| 桂林市| 乐平市| 防城港市| 焦作市| 逊克县| 衢州市| 望谟县| 凤翔县| 哈尔滨市| 寻甸| 株洲市| 南充市|