Найти строки A-> B, кратные циклу while - PullRequest
0 голосов
/ 29 марта 2019

Привет

Я нахожусь в проекте, который требует, чтобы я нашел интервал строки, кратный (от display_url до display_resources )в текстовом файле.Пока у меня есть такой код, но когда я его запускаю, он никогда не ломается .

Целью этого кода является:

  1. Поиск строк из индекса le1 / le2 в качестве отправной точки.
  2. Обновите новый найденный индекс из переменных dat / det до le1 / le2 [, чтобы перейти кследующий интервал строк в файле .txt (в моем тесте их четыре)] *
  3. Добавьте переменные le1 & le2 к urls список.
  4. Цикл, пока дата & det не возвращает -1.
  5. Печать всех комбинаций le1 и le2 , полученных в списке urls .

Это очень поможет, подумайте спасибо.


    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 голосов
/ 29 марта 2019

Если 'display_url' и 'display_resources' изначально находятся в строке, три if оператора никогда не сработают.Вы хотите что-то вроде следующего, который записывает det и dat на каждом шаге и начинает поиск снова с этой точки.Цикл while продолжается до тех пор, пока оба оператора не будут выполнены.

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]
...