我怎麼會寫一個簡單的Python函數,它在一個字符串,並通過更換半決賽和破折號空間修復它?例如:Python的功能轉換分號和破折號空格字符串
- 輸入字符串:這;是;一個-示例串
- 輸出字符串:這是一個例子串
相信我可以使用正則表達式(從使用Google),但我我不確定那是如何工作的?我會假設正則表達式比手動解析這個更簡單,更簡潔。感謝
我怎麼會寫一個簡單的Python函數,它在一個字符串,並通過更換半決賽和破折號空間修復它?例如:Python的功能轉換分號和破折號空格字符串
相信我可以使用正則表達式(從使用Google),但我我不確定那是如何工作的?我會假設正則表達式比手動解析這個更簡單,更簡潔。感謝
如果你想使用正則表達式,這是你會怎麼做:
>>> import re
>>> re.sub('[;-]', ' ', string)
'This is an example string'
OTOH,正則表達式似乎矯枉過正這裏。你可以鏈上的兩個str.replace
電話或者使用str.translate
(python3.x)。
>>> string.translate(str.maketrans(dict.fromkeys(';-', ' ')))
'This is an example string'
對於python2.x,你最好先import string as st
,然後調用st.maketrans
以同樣的方式。
translate
優於replace
的優勢在於它的速度非常快,只需一次呼叫,無論要進行的替換次數/類型如何。
值得一提的是,類型對象'str'在Python 27下沒有屬性'maketrans''。 – Kanak
您可以使用re.sub()
在Python中尋找一個字符串的模式與其他模式取代它。在這種情況下,你可以看看圖案[a-z&A-Z&0-9]
,如果不是這些字符在其他的字符串中存在一個空格替換它。
re.sub(pattern, repl, string)
import re
value = "This;is;an-example-string output string:"
new_value = re.sub('[^a-zA-Z0-9 \n\.]', ' ', value)
print (new_value)
不,它不是全部包括在內,並且除了分號或連字符之外還會換出任何其他特殊字符。爲什麼你會認爲這比'[^; - ]'好? –
在這種情況下使用正則表達式將overdimensionized。只需使用字符串類型相關的方法replace。如下' 「這;是;一個-示例串」 .replace( ' - ', ' ').replace(';',」「)'。 – Kanak
爲什麼你認爲你需要一個正則表達式?用字符串'replace'方法替換字符。 –