Заменить слово в строке путем индексации без "string replace function" -python - PullRequest
0 голосов
/ 17 мая 2018

Есть ли способ заменить слово в строке без использования «функции замены строки», например, string.replace (строка, слово, замена).

[out] = forecast('This snowy weather is so cold.','cold','awesome')
out => 'This snowy weather is so awesome.

Здесь слово «холодное»заменено на удивительное.

Это из моей домашней работы по MATLAB, которую я пытаюсь сделать на python.Когда мы делали это в MATLAB, нам не позволяли нам strrep ().

В MATLAB я могу использовать strfind, чтобы найти индекс и работать оттуда.Однако я заметил, что между списками и строками есть большая разница.Строки являются неизменяемыми в python и, вероятно, придется импортировать какой-то модуль, чтобы изменить его на другой тип данных, чтобы я мог работать с ним, как я хочу, без использования функции замены строк.

Ответы [ 4 ]

0 голосов
/ 17 мая 2018

Использование Regex и понимание списка.

import re
def strReplace(sentence, toReplace, toReplaceWith):
    return " ".join([re.sub(toReplace, toReplaceWith, i) if re.search(toReplace, i) else i for i in sentence.split()])

print(strReplace('This snowy weather is so cold.', 'cold', 'awesome'))

Выход:

This snowy weather is so awesome.
0 голосов
/ 17 мая 2018

Вот еще один ответ, который может быть ближе к решению, которое вы описали с помощью MATLAB:

st = 'This snow weather is so cold.'
given_word = 'awesome'
word_to_replace = 'cold'
n = len(word_to_replace)

index_of_word_to_replace = st.find(word_to_replace)

print st[:index_of_word_to_replace]+given_word+st[index_of_word_to_replace+n:]
0 голосов
/ 17 мая 2018

Вы можете преобразовать вашу строку в объект списка, найти индекс слова, которое вы хотите заменить, а затем заменить слово.

sentence = "This snowy weather is so cold"

# Split the sentence into a list of the words
words = sentence.split(" ")

# Get the index of the word you want to replace
word_to_replace_index = words.index("cold")

# Replace the target word with the new word based on the index
words[word_to_replace_index] = "awesome"

# Generate a new sentence
new_sentence = ' '.join(words)
0 голосов
/ 17 мая 2018

просто для удовольствия :)

st = 'This snowy weather is so cold .'.split()
given_word = 'awesome'
for i, word in enumerate(st):
    if word == 'cold':
        st.pop(i)                                                                                                                                                                 
        st[i - 1] = given_word
        break # break if we found first word

print(' '.join(st))
...