使用while循环多次查找A-> B字符串

时间:2019-03-29 17:56:53

标签: python loops while-loop find readfile

你好

我在一个项目中,要求我在.txt中多次查找字符串间隔(从 display_url display_resources )文件。 现在,我已经有了这样的代码,但是当我运行它时,它永不中断

此代码的目标是:

  1. le1 / le2 索引中搜索字符串作为起点。
  2. 将新找到的索引从 dat / det 变量更新为 le1 / le2 [转到.txt文件中的下一个字符串间隔(在我的测试中,它们是其中的四个)]
  3. le1 le2 变量添加到 urls 列表中。
  4. 只要 dat det 不返回-1,就循环。
  5. 打印在 urls 列表中获得的 le1 le2 的所有组合。

感谢您的想法将大有帮助。


    urls = []
    g = open('tet.txt','r')
    data=''.join(g.readlines())
    count = 0
    le1 = 1
    le2 = 1


    while count >= 0 :
        dat = data.find('display_url', le1)
        det = data.find('display_resources', le2)
        if dat < le1: 
            le1 = le1 +dat
        if det < le2:
            le2 = lez +det
        urls.append(le1)
        urls.append(le2)
        if dat <= 0 :
            count = -1
            break

    print(urls)

1 个答案:

答案 0 :(得分:0)

如果最初在字符串中包含'display_url''display_resources',则您的三个if语句永远不会被触发。您需要类似以下内容的东西,它在每个步骤中记录det和dat并从该点开始再次搜索。 while循环一直进行到两个if语句都失败。

le1 = 0
le2 = 0
still_looking = True
while still_looking:
    still_looking = False
    dat = data.find('display_url', le1)
    det = data.find('display_resources', le2)
    if dat >= le1:
        urls.append(dat)
        le1 = dat + 1
        still_looking = True                
    if det >= le2:
        urls.append(det)
        le2 = det + 1
        still_looking = True

data = "somestuffdisplay_url some more stuff display_resources even more stuff display_url lastly more stuff still, can you believe it?"

返回:

[9, 37, 71]