2017-10-08 150 views
-1

我怎麼會寫一個簡單的Python函數,它在一個字符串,並通過更換半決賽和破折號空間修復它?例如:Python的功能轉換分號和破折號空格字符串

  • 輸入字符串:這;是;一個-示例串
  • 輸出字符串:這是一個例子串

相信我可以使用正則表達式(從使用Google),但我我不確定那是如何工作的?我會假設正則表達式比手動解析這個更簡單,更簡潔。感謝

+2

在這種情況下使用正則表達式將overdimensionized。只需使用字符串類型相關的方法replace。如下' 「這;是;一個-示例串」 .replace( ' - ', ' ').replace(';',」「)'。 – Kanak

+0

爲什麼你認爲你需要一個正則表達式?用字符串'replace'方法替換字符。 –

回答

4

如果你想使用正則表達式,這是你會怎麼做:

>>> 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的優勢在於它的速度非常快,只需一次呼叫,無論要進行的替換次數/類型如何。

+1

值得一提的是,類型對象'str'在Python 27下沒有屬性'maketrans''。 – Kanak

0

您可以使用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) 
+0

不,它不是全部包括在內,並且除了分號或連字符之外還會換出任何其他特殊字符。爲什麼你會認爲這比'[^; - ]'好? –

相關問題