用正则怎么将html文件中文字取出?今天碰到这个问题,思来想去尝试了好几种方法,历经一阵头脑风暴,最后终于还是解决了,想想还是来记录一下。一共定义了三个函数,包含正则切割、正则判断对象开头、ASCII码编码、ASCII码解码、isinstance函数使用、with上下文。
首先随便找了一段文字,创建了一个html文件,内容如下:
<p>tkinter模块(“Tk接口”)是Scriptics的Tk GUI工具包的<b>标准Python接口</b>,支持在Unix平台、Windows系统和Macintosh系统上运行。因为它由<a href="https://www.myblou.com">很多</a>小构件组成,当我们在设计一个GUI时,可以通过它丰富的构件库满足我们的需求。</p>
<br>
<p>tkinter模块(“Tk接口”)是Scriptics的Tk GUI<b>工具包</b>的标准Python接口,支持在Unix平台、Windows系统和Macintosh系统上运行。因为它由很多小构件组成,当我们在设计一个GUI时,可以通过它丰富的构件库满足我们的需求。</p>
<br>
本文转自:https://www.myblou.com/archives/1383
导入re模块:
import re
函数一:上面是将html文件中的所有文字(不包含标签)进行ASCII编码,并返回成一个列表。
def ASC_bianma():
‘‘‘将文字进行ASC编码‘‘‘
with open(r‘C:\Users\dell\Desktop\zhengze\ni.html‘,‘r‘,encoding=‘utf8‘) as f:
wenzi = f.read() # 导出文件中的所有内容
pipei = re.split(r‘(<.*?>)‘,wenzi) # 使用正则以标签进行分隔,返回一个列表
lst = []
for x in pipei:
if re.match(‘<.*?>‘,x) or re.match(r‘\s‘,x): # 判断条件:如果是以<.*?>开头或是空白字符开头
lst.append(x) # 直接追加到l列表中
continue # 跳出本次循环进行下次循环
else:
for v in x:
bianma = ord(v) # 进行ASC编码
lst.append(bianma) # 追加到l列表中
return lst
函数二:函数二是将所有文字(不包含标签)进行ASCII解码,并返回成字符串。
def ASC_jiema(lis):
‘‘‘将ASC码转换成文字‘‘‘
ls = []
for x in lis:
if isinstance(x,int): # 判断x是不是int型
jiema = chr(x) # 进行ASC解码
ls.append(jiema) # 追加到t列表中
continue # 跳出本次循环进行下次循环
else:
ls.append(x) # 直接追加到t列表中
st = ‘‘.join(ls) # 将t列表中的所有元素连接,返回成字符串
return st
函数三:将解码的字符串写入一个新建的html文件中。