python:删除特定字符串之间的其他文件中找到的字符串

时间:2016-12-22 21:42:27

标签: python string find

我有一个txt文件,如:

first.txt

  

约翰尼^ ^管道工NY;安娜^ ^医生华盛顿;凯特^ ^管理员佛罗里达州

然后我在文件夹中有多个output3 * .txt文件,数据一直在保存:

  哈哈管道工布拉布拉;

其他人可能会像:

  哈哈医生blabla;哈哈管理员blabla

如果output3 * .txt文件中没有单词“exit” - 它等待几秒钟,然后在每个没有“退出”内部的文件中删除haha和blabla之间的那些单词(管道工医生管理员)第一个txt文件中的那些单词。

file_names3 = glob.glob(pathtemp+"/output3*.txt")
abort_after = 1 * 5
start = time.time()
while True:
    if not file_names3:
        break
    delta = time.time() - start
    if delta >= abort_after:
        with open(path+"/"+statuses, "a") as statuses:
            statuses.write("-----------------\n ERRORS:\n\n-----------------\n")
            for file_name in file_names3:
                statuses.write("%s" % file_name + " - file not done: ")
                with open(file_name, 'r') as prenotf:
                    reader=prenotf.read()
                    for "haha" in reader:
                        finding=reader[reader.find("haha")+5:reader.find("blabla")]


                        statuses.write(finding)

        break
    time.sleep(3)
    for file_name in file_names3:
        with open(file_name, "r") as zz:
            if "exit" in zz.read():   #<<<--- test data
                file_names3.remove(file_name)
                print ("\n ############# List of files still Waiting to be done:\n")
                print (file_names3)
我忙着寻找哈哈和布拉布拉之间的那些话。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

当您在对象进行迭代时更改对象时,会弄乱固有的位置指针。这个指针是绝对的。如果从文件中删除10个字符,则文件的其余部分会向上移动,但指针不会更改。这有效会跳过接下来的10个字符。

你的逻辑分为两部分,然后是:

  • 在解析第一个文件时写入第二个文件。完成后,您可以将新文件移动到旧名称。
  • 维护活动标志。当你点击哈哈时将其关闭,当你点击 blabla 时重新开启。

它看起来像这样:

temp_file = open("tempfile.txt", 'w')

active = True
for line in <your input>:
    if "haha" in line:
        active = True
    elif "blabla" in line:
        active = False
    elif active
        temp_file.write(line)

您可以将其用于您的程序的当前逻辑吗?