用正则怎么将html文件中文字取出进行ASCII码转换?
用正则怎么将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文件中。
def xieru_wenjian(sr): '''写入html文件中''' with open(r'C:\Users\dell\Desktop\zhengze\ha.html','w',encoding='utf8') as f: f.write(sr) print('文件写入完成')
执行函数:
if __name__ == '__main__': ma = ASC_bianma() zifu = ASC_jiema(ma) xieru_wenjian(zifu)
运行结果:
文件写入完成
打开写入的文件夹路径,会发现一个新的html文件,打开看是这样的:
鼠标右击查看页面源代码,就会发现跟开始的文件是一样的。
以上就是我对用正则将html文件中文字取出进行ASCII码转换的讲解,你学会了吗?