我認爲最好的方法是使用正則表達式,但我不知道該怎麼做。我試圖解析一個字符串,並在字母和標點符號之間加一個空格。我想一起保留標點符號。作爲一個例子,如果我有字符串python正則表達式插入標點符號和字母之間的空格
「是的!!!」
我想結束於
「是」,「!!!」。
如果我有串
!!! N00bs,
我想
落得 「!!!」, 「N00bs」
這可能嗎?做這個的最好方式是什麼?現在我正在分析每封信,這是一個愚蠢的做法。
感謝您的幫助。
我認爲最好的方法是使用正則表達式,但我不知道該怎麼做。我試圖解析一個字符串,並在字母和標點符號之間加一個空格。我想一起保留標點符號。作爲一個例子,如果我有字符串python正則表達式插入標點符號和字母之間的空格
「是的!!!」
我想結束於
「是」,「!!!」。
如果我有串
!!! N00bs,
我想
落得 「!!!」, 「N00bs」
這可能嗎?做這個的最好方式是什麼?現在我正在分析每封信,這是一個愚蠢的做法。
感謝您的幫助。
是這樣的:
txt = re.sub(r'([a-zA-Z])([,.!])', r'\1 \2', '!!!this, .is, .a .test!!!')
可以切換爲了讓其他的方向
re.sub(r'([,.!])([a-zA-Z])', r'\1 \2', txt)
或許你也可以讓它在一個正則表達式的工作,以及
這幾乎就在那裏。如果標點符號在你改變「!is」之前所做的那樣,它似乎不起作用。我試圖在標點符號和字母字符之間獲得空格 –
我改變了它,因爲我不知道你是否想要這種情況。我會編輯我的答案。 –
謝謝,這完全是因爲我不明確。 –
如果你只是想要添加一個空間也許使用替換?
x = x.replace('!',' ')
您可能不得不使用更多的替換來刪除標點符號和標點之間的空格。
我會使用:
(.+)\b(.+)
它同時適用於yes!!!
和!!!N00bs
說明:
The regular expression:
(?-imsx:(.+)\b(.+))
matches as follows:
NODE EXPLANATION
----------------------------------------------------------------------
(?-imsx: group, but do not capture (case-sensitive)
(with^and $ matching normally) (with . not
matching \n) (matching whitespace and #
normally):
----------------------------------------------------------------------
( group and capture to \1:
----------------------------------------------------------------------
.+ any character except \n (1 or more times
(matching the most amount possible))
----------------------------------------------------------------------
) end of \1
----------------------------------------------------------------------
\b the boundary between a word char (\w) and
something that is not a word char
----------------------------------------------------------------------
( group and capture to \2:
----------------------------------------------------------------------
.+ any character except \n (1 or more times
(matching the most amount possible))
----------------------------------------------------------------------
) end of \2
----------------------------------------------------------------------
) end of grouping
----------------------------------------------------------------------
我知道你說你只是想帶出標點,但以防萬一你想這樣做,也想一次去掉其他非字母數字字符,例如(@#$%^&*(()<> + =)或者其他什麼,你可以使用'\ w'和'\ W'。這很好。如果您使用的是Python 3.x,它會自動執行Unicode字符。 – Shule