• python实现根据目标字符串修改一下行


    需求:

    根据source和dest两个文件,找出新增的命令行,然后在xml文件中根据命令修改id

    输入souce:

    ADD 100
    SUB 200
    

    输入dest:

    MUL 300
    DIV 400
    ADD 100
    

      输入macro:

    <tar>MUL</tar>
    <id>0</id>
    ......
    <tar>DIV</tar>
    <id>0</id>
    

      输出:

    <tar>MUL</tar>
    <id>300</id>
    ......
    <tar>DIV</tar>
    <id>400</id>
    

      实现代码:

    #! /usr/bin/env python
    # encoding:utf-8
    import re
    from bs4 import BeautifulSoup
    
    def chen():
        file1 = 'D:pyyeahsource.txt'
        file2 = 'D:pyyeahdest.txt'
        file3 = 'D:pyyeahmacro.xml'
        source = []
        dest = []
        with open(file1, 'r') as f_s:
            for line in f_s:
                source.append(line.strip())
        with open(file2, 'r') as f_d:
            for line in f_d:
                dest.append(line.strip())
    
        result = [item for item in dest if item not in source]  # 获取新增的命令
        print(result)
        '''
            f_xml = open(file3,'r+',encoding ='utf-8')
            soup = BeautifulSoup(f_xml,'xml')
            for item in soup.find_all('tar'):     #找到tar的节点
                next_sibling = item.find_next_sibling() #由于<tar></tar>和<id></id>是兄弟节点,可以通过查找下一个兄弟节点找到<MacroId>
                print(next_sibling.string)  #修改<id></id>的内容
                next_sibling.string = '0'
        '''
        dic ={}
        for res in result:
            dic[re.sub('d+','',res).strip()] = re.sub('D+','',res).strip()
        data = []
        with open(file3, 'r', encoding="utf-8") as f3_r:
            lines = f3_r.readlines()
            lineIdx = 0
            while lineIdx < len(lines):
                if re.search('tar', lines[lineIdx]):  # 查找到<CmdName>
                    data.append(lines[lineIdx])
                    tarstr = re.findall(r"<tar>(.+?)</tar>",lines[lineIdx])
                    lineIdx += 1  # 索引到下一行
                    if tarstr[0] in dic.keys():
                        lines[lineIdx] = re.sub("d+", dic[tarstr[0]], lines[lineIdx])  # 将ID替换为目标ID值
                    data.append(lines[lineIdx])
                else:
                    data.append(lines[lineIdx])
                lineIdx += 1
        with open(file3, 'w', encoding="utf-8") as f3_w:  # 写回原文件
            for item in data:
                f3_w.write(item)
    
    if __name__ == '__main__':
        chen()
    

      

  • 相关阅读:
    tomcat容器启动的启动过程(三)
    tomcat源码分析(二)启动过程
    tomcat源码分析(一)
    spring 整合redis
    redis win版安装
    java虚拟机存储区
    java代码块 静态、非静态
    Vulkan Tutorial 08 交换链
    Vulkan Tutorial 07 Window surface
    Vulkan Tutorial 06 逻辑设备与队列
  • 原文地址:https://www.cnblogs.com/xqn2017/p/8442732.html
Copyright © 2020-2023  润新知