#python #loops #while-loop #find #readfile
#python #циклы #цикл while #Найти #readfile
Вопрос:
Здравствуйте
Я работаю над проектом, который требует от меня многократного поиска интервала строк (от display_url до display_resources) в текстовом файле. На данный момент у меня есть такой код, но когда я его запускаю, он никогда не ломается.
Цель этого кода — :
- В качестве отправной точки выполните поиск строк из индекса le1 / le2.
- Обновите новый найденный индекс из переменных dat / det до le1 / le2 [чтобы перейти к следующему интервалу строк в файле .txt (в моем тесте их четыре)]
- Добавьте переменные le1 и le2 в список URL.
- Цикл до тех пор, пока dat amp; det не вернет значение -1.
- Выведите все комбинации le1 и le2, полученные в списке URL.
Ваши мысли очень помогут, спасибо.
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. что вы сделали для его отладки? (например, распечатали
locals()
внутри цикла, чтобы увидеть, как изменяются переменные?)2. ps: кажется, что шага 4 в вашем описании нет в вашем коде …?
3. pps: без примерного ввода и ожидаемого результата никто не сможет вам помочь.
4. Нет, я не знаю, как это разместить? (Извините, я новичок в этом) Я могу попробовать добавить в цикл функцию print(), чтобы посмотреть, что делает программа.
5. ps: разве печать (URL-адреса) не является 4-м шагом?
Ответ №1:
Если '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]
Комментарии:
1. Большое вам спасибо, вы спасли мою жизнь.