首页 > 解决方案 > Python 文本替换为 for 循环

问题描述

我只是想删除所有日期时间值......但每次它都会从头开始并用最后一个值刷新文本。如何删除所有时间值?

我的文本文件是 hey.txt,这是它的内部:

14:15
24:32
trying
42:56
1:42
for
testing

代码部分:

import re
filename = "hey.txt"
text = open(filename).read()
n,i,c,x,=(0,0,0,0)
datetimes = []
for number in range(3600):
    n+=1
    b=str(n)
    if n<10:
        b = "0"+str(n)
    elif n==60:
        i+=1
        n=0 
    datetimes.append("%d:%s"%(i,b)) 
for word in datetimes:    
    matches = re.compile(word).finditer(text)
    for match in matches:
        z= match.group(0)
        print(z)
        if z==word:
            open("datetimes-doc.txt","w+").write(text.replace(z,""))
            c+=1
        elif z!=word:
            c+=1
        print("proccess:%d"%c)

这是我的发送文件 datetimes-doc.txt

14:15
24:32
trying

1:42
for
testing

这是控制台的一些输出:

1:42
proccess:1
2:56
proccess:2
4:15
proccess:3
4:32
proccess:4
14:15
proccess:5
24:32
proccess:6
42:56
proccess:7

标签: pythonpython-3.x

解决方案


而不是 for 循环,为什么不:

#read entire file's content 
with open('hey.txt') as f:
    content = f.read()

# find time and replace with empty string
new_content = re.sub(r'[0-5]*[0-9]:[0-5]*[0-9]\n','', content)

#write results into file
with open('hey2.txt', 'w') as f:
    f.write(new_content)

推荐阅读