python查找TXT中对应的字符串并对其修改


修改过了,用上了正则表达式,感觉这次比上面的好多了,程序方面也不会有太大的速度拖累。

import re

num=0
def findstr(str1,filename):
    liststart=[]
    listend=[]

    listadd=0
    jishu=0
    global num
    bu=''
    content2=''

    with open(filename, 'r', encoding='utf-8') as f:
        a=f.readlines()
        length=len(a)
        for i in range(0,length):
            content=a[i]
            pattern=re.search(str1,content)
            if pattern!=None:
                pattern2=re.finditer(',',content)
                for match in pattern2:
                    liststart.append(match.start())
                    listend.append(match.end())
                    jishu+=1
                    if jishu==2:
                        if num<10:
                            bu='000'
                        elif num>=10 and num<100:
                            bu='00'
                        elif num>=100 and num<1000:
                            bu='0'
                        elif num>=1000:
                            bu=''
                        jishu=0
                        a[i]=content[:listend[listadd]]+'"'+bu+str(num)+'"'+content[liststart[listadd+1]:]
                        listadd += 2
                        num+=1
                        break
                if jishu==1:
                    listadd+=1
                    jishu=0
                if pattern2==None:
                    jishu=0
    f.close()

    file = open(filename, "w", encoding='utf-8')
    for j in range(0,length):
        content2+=a[j]
    file.write(content2)
    file.close()
findstr('commitBug','E:/find/ls.txt')

需求跟之前的代码差不多,这次依然采用一行一行的检测,re.search检测是否有str1字符串,re.finditer搜索并返回一个迭代器。content保存每一行的字符串,修改的content输入到a[i]列表中,最后在写文档时一次性将a列表中的元素导入到content2中,完成修改。
之前的代码删了,有点误导人。

你可能感兴趣的:(python查找TXT中对应的字符串并对其修改)