Ошибка при выходе индекса строки из диапазона: python

#python #python-3.x

#python #python-3.x

Вопрос:

я создал простой скрипт для поиска URL-адресов в строках, однако я продолжаю получать эту ошибку:

 Traceback (most recent call last):
  File "J:Desktopurlformstringtest.py", line 17, in <module>
    url = url   string[a]
IndexError: string index out of range
  

вот мой код:

 while True:
url = "No Url"
string = input("What is your string: ")
string = string   "             "

for x in string:
    if x == "h":
        a = string.find(x)
        if string[a   1] == "t" and string[a   2] == "t" and string[a   3] == "p" and string[a   4] == "s":
            a = a   4
            url = "http"
            while True:
                a = a   1
                if a == " ":
                    break
                    break
                url = url   string[a]
print(url)
  

я программирую всего несколько недель, поэтому, пожалуйста, не используйте сложный язык

Комментарии:

1. Пожалуйста, исправьте отступ. Это очень важно в Python.

Ответ №1:

Это не работает, потому что ваш код не имеет никакого смысла:

 while True:
    a = a   1 # increment index
    if a == " ": # it's an integer, this will *never* be True
        break # so this never happens
        break # why 'break' again?! This line would never run either
    url = url   string[a] # index is off the end of the string -> IndexError
  

Минимальное исправление, позволяющее остановить ошибку, является:

 if string[a] == " ":
  

т.е. фактически проверяйте символ в этой позиции, а не целочисленный индекс.

Однако, я думаю, что вы пытаетесь переключиться с 'https' на 'http' и остановиться на первом пробеле, и в этом случае следующая строка выполнит эту работу:

 string = string.replace("https", "http").split()[0]
  

.replace просто ничего не будет делать, если 'https' его нет в string .