[英]How to identify a character within a word and substitute that letter into another string - Python
對於我的子手項目,在此人確實正確猜出字母的情況下,我希望能夠用該字母代替'_'空格。
word = input('Please enter a word for your opponent:')
letter = input('Enter a letter to try and guess the word:')
print('_ '*len(word))
if 'a' in word and letter:
print('_ '*len(word) with 'a' in word)
例如,如果輸入的單詞是'matt',則輸出將是'_a__'
您可以將regex替換與re.sub
:
In [514]: word = 'matt'
In [515]: letter = 'a'
In [518]: re.sub(r'[^%s]' %letter, '_', word)
Out[518]: '_a__'
作為有關如何繼續使用后續字母的方法的提示,每次用戶輸入字母時,將其添加到letter
,如下所示:
In [521]: new_letter = 't' # replace this with user input
In [522]: letter += new_letter
並且,正則表達式將在顯示時適當地處理新字母:
In [523]: re.sub(r'[^%s]' %letter, '_', word)
Out[523]: '_att'
您也可以以更簡單的方式執行此操作。
>>> word_split = list(word)
>>> for a in range(len(word_split)):
... if word_split[a] != letter:
... word_split[a] = "_"
...
>>> print(" ".join(word_split))
_ _ _ _ _ _ _ a _
但是@COLDSPEED的解決方案是一種優雅的解決方案。
這是另一個非正則表達式解決方案。 創建一組找到給定字符的索引。 然后,該索引用於索引可以在傳入的下划線列表中替換的角色( 一種在主游戲循環中更新所傳遞的序列引用的方法 )。
def subsitute_character(character, target_word, sequence):
indicies = {index for index, element in enumerate(target_word) if element == character}
return ''.join(target_word[index] if index in indicies else element
for index, element in enumerate(sequence))
樣本輸出:
>>> s = "matt"
>>> l = ["_" for _ in range(len(s))]
>>> print subsitute_character("t", s, l)
__tt
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.