簡體   English   中英

如何識別單詞中的字符並將該字母替換為另一個字符串-Python

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM