如何利用正则表达式来查找xml所需的信息

 

 

  • 前提了解什么是正则表达式和xml

   正则表达式:正则表达式是对字符串操作的一种逻辑公式,用特定的表达式来搜索我们所需要的一些特定字符、及这些特定字符的组合。

    xml:可扩展标记语言,用来传输和存储数据(html是用来显示数据)。

    具体的知识点后期再整理,正则表达式的特点就是看起来容易,但是执行无从下手,所以还是得多进行操作练习。 

  •   具体实施步骤 
  1.  获取某个路径下的所有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就是我们所要捞的值。

 

posted @ 2020-12-05 00:50  是超级可爱的小姚童鞋  阅读(898)  评论(0编辑  收藏  举报