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

Find A->B strings multiples times with a while loop

你好

我的项目要求我找到一个字符串间隔倍数(从display_urldisplay_resources) 在 .txt 文件中。 现在我有这样的代码,但是当我 运行 它时, 它永远不会中断

此代码的目标是:

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

谢谢你的想法会有很大帮助。


    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)

如果 '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?"

returns:

[9, 37, 71]