我想這樣做:如何用Python中的另一個字符串替換函數中的字符串?
>>> special = 'x'
>>> random_function('Hello how are you')
'xxxxx xxx xxx xxx'
我基本上要返回字符串:{(STR) - > STR}
我不斷獲取變量定義。
對不起,這是我的第一篇文章。
我想這樣做:如何用Python中的另一個字符串替換函數中的字符串?
>>> special = 'x'
>>> random_function('Hello how are you')
'xxxxx xxx xxx xxx'
我基本上要返回字符串:{(STR) - > STR}
我不斷獲取變量定義。
對不起,這是我的第一篇文章。
由於Python中的字符串是不可變的,每次使用replace()
方法時都必須創建一個新的字符串。每次調用replace也必須遍歷整個字符串。這顯然是低效的,雖然在這個尺度上並不明顯。
一種替代方法是使用列表包含(docs,tutorial)循環一次字符串並創建新字符列表。 isalnum()
方法可以用作測試,僅用於替換字母數字字符(即留下空格,標點符號等未改動)。
最後一步是使用join()
方法將字符連接到新字符串中。請注意,在這種情況下,我們使用空字符串''
將它們之間的任何內容連接在一起。如果我們使用' '.join(new_chars)
,則每個字符之間會有一個空格,或者如果我們使用'abc'.join(new_chars)
,則字母abc
將位於每個字符之間。
>>> def random_function(string, replacement):
... new_chars = [replacement if char.isalnum() else char for char in string]
... return ''.join(new_chars)
...
>>> random_function('Hello how are you', 'x')
'xxxxx xxx xxx xxx'
當然,你應該把這個功能比random_function()
一個更合乎邏輯的名字......
這可以用正則表達式可以輕鬆完成:
>>> re.sub('[A-Za-z]', 'x', 'Hello how are you')
'xxxxx xxx xxx xxx'
不知道我是否應該在註釋或整個答案補充呢?正如其他人所建議的,我會建議使用正則表達式,但是您可以使用\w
字符來指代任何字母表中的字母。下面是完整的代碼:
import re
def random_function(string):
newString=re.sub('\w', 'x', string)
return(newString)
print(random_function('Hello how are you'))
應打印XXXXX XXX XXX XXX