Строка replace () не работает должным образом - PullRequest
0 голосов
/ 11 марта 2019

У меня возникли проблемы с функцией replace() в python.Вот мой код:

string = input()
word = string.find('word')
if word >= 1:
    string = string.replace('word', 'word.2')
print(string)

На выходе выдает word.Разве это не должно быть word.2?Я не совсем понимаю.Любая помощь?

Редактировать: После того, как немного поигрался с проблемой, я обнаружил, что теперь вопрос "Почему string.find('word') равно 0 для ввода word?

Ответы [ 3 ]

6 голосов
/ 11 марта 2019

вместо

word >= 1

запись

word >= 0

string.find () возвращает первое вхождение слова. Если ваша строка - «слово» и вы нашли «слово», она вернет 0, так как слово «слово» вначале встречается с индексом 0.

В python массивы начинаются с 0. Первый символ в строке - с индексом 0.

Следовательно, «слово» в «слове» находится на первом месте, т. Е. 0.

3 голосов
/ 11 марта 2019

Нет необходимости использовать функцию поиска, просто сделайте:

string = input()
string = string.replace('word', 'word.2')

Но, тем не менее, если я запустил его в Python3, ваш код верен ;-) Как выглядит ваш ввод?

0 голосов
/ 11 марта 2019

это происходит потому, что первое вхождение рассматривается как нулевая позиция, используйте код ниже

string = input().replace('word','word.2')
print(string)
...