如何利用正则表达式来查找xml所需的信息
- 前提了解什么是正则表达式和xml
正则表达式:正则表达式是对字符串操作的一种逻辑公式,用特定的表达式来搜索我们所需要的一些特定字符、及这些特定字符的组合。
xml:可扩展标记语言,用来传输和存储数据(html是用来显示数据)。
具体的知识点后期再整理,正则表达式的特点就是看起来容易,但是执行无从下手,所以还是得多进行操作练习。
- 具体实施步骤
- 获取某个路径下的所有XML文件路径
可能很多时候我们要捞一堆XML文件,这时候可以先用列表装入每一个XML的文件路径,再依此遍历获取里面的信息。
def get_next(package_dir): dirpaths = [] for root, dirs, files in os.walk(package_dir): # root 表示当前正在访问的文件夹路径 # dirs 表示该文件夹下的子目录名list # files 表示该文件夹下的文件list for file in files: path = os.path.join(root, file) dirpaths.append(path) for dir in dirs: path = os.path.join(root, dir) dirpaths.append(path) xml_list = [] for xml_files in dirpaths: # 搜索xml文件 if xml_files.endswith('.xml'): xml_list.append(xml_files) # 获取的每个xm路径 列表 return xml_list
2. 遍历文件
随笔的主要内容!利用正则表达式查找信息,先说一下我们要找什么?
显而易见我们要找text=" ",双引号里面的内容。(若要查找含有意义的特殊字符要进行‘转意’-> '\')
. : 匹配除换行符 \n 之外的任何单字符
* : 匹配前面的子表达式零次或多次
? : 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符
# 读取xml文件里面的text def get_xml_text(xml_list_path): # 用 compile 函数将正则表达式的字符串形式编译为一个 Pattern 对象 re_text = re.compile(r'text="(.*?)"') text_final = [] with open(xml_list_path, 'r', encoding='utf-8') as xmlfile: # 通过 Pattern 对象提供的一系列方法对文本进行匹配查找 text_list = re_text.findall(xmlfile.read()) # read获取文件所有内容 for text_item in text_list: # text不能为空 if text_item != '': text_final.append(text_item) return text_final
最终,text_final就是我们所要捞的值。