2017-02-06 135 views
2

我試圖消除所有的單字符串中的字符蟒蛇正則表達式來替換所有單個字字符字符串

輸入:「這是一個大的汽車,它有一個寬敞的座位」

我的輸出應該是:

輸出:「這是大的汽車,它有寬敞的座位」

這裏我使用的是表達

import re 
re.compile('\b(?<=)[a-z](?=)\b') 

這與字符串中第一個匹配單個字符...

任何幫助,將不勝感激...謝謝提前

+2

由於它們匹配一個空模式並始終返回true,所以這裏的lookarounds看起來多餘。你用're.sub'使用模式嗎? 're.sub(r'\ b [a-zA-Z] \ b','',s)'應該可以在一定程度上消除所有*單個字母詞 –

+3

與正則表達式'''.join(word strng.split('')如果len(word)> 1)' –

+2

@Chris_Rands:例如,這也將刪除單個數字的數字。 –

回答

1

編輯:我剛纔已經看到,這是在第一次發表的意見Wiktor的Stribiżew建議。信用他 - 我沒有看到這張貼的時間。

您還可以使用re.sub()自動刪除單個字符(假設您只想刪除字母字符)。下面將取代單個字母字符的任何出現:

import re 
input = "This is a big car and it has a spacious seats" 

output = re.sub(r"\b[a-zA-Z]\b", "", input) 

>>> 
output = "This is big car and it has spacious seats" 

您可以瞭解更多關於此更換字符串時,輸入正則表達式:How to input a regex in string.replace?

+0

謝謝你的工作...... :) – Ravi

+0

@Ravi只是重複我沒有看到Wiktor Stribizew的評論,當我寫這個。很高興我們能夠提供幫助。 – Chuck

0

編輯

您可以使用:

import re 
input_string = "This is a big car and it has a spacious seats" 
str_without_single_chars = re.sub(r'(?:^|)\w(?:$|)', ' ', input_string).strip() 

或(其爲被帶到了我的注意,不符合規格而定):

input_string = "This is a big car and it has a spacious seats" 
' '.join(w for w in input_string.split() if len(w)>3) 
+0

這是不公平的複製粘貼評論作爲答案。 – Toto

+0

...並且不符合當前的規格。 –

+1

閱讀評論下面的問題,你會看到。 –

2

這是一個被分裂字符串和過濾出使用len單長信做這件事和str.isalpha

>>> s = "1 . This is a big car and it has a spacious seats" 
>>> ' '.join(i for i in s.split() if not (i.isalpha() and len(i)==1)) 
'1 . This is big car and it has spacious seats' 
0

刪除之間的話,字符,字符串或任何東西的最快方法字符串中的兩個已知標記或兩個已知字符是通過使用RE和Common的直接和本機C方法,如下所示。

var = re.sub('<script>', '<!--', var) 
var = re.sub('</script>', '-->', var) 
#And finally 
var = re.sub('<!--.*?-->', '', var) 

它消除了一切,比美麗的湯更快,更好,更乾淨。 批處理文件是「」從那裏開始的,只能借用批處理和來自本地C的html。「當使用所有Pythonic方法和正則表達式時,你必須認識到Python並沒有改變或改變所有正則表達式通過機器語言使用何必重複很多次,當單迴路可以找到這一切在一個迭代一個大塊?有個別人物做同樣也。

var = re.sub('\[', '<!--', var) 
var = re.sub('\]', '-->', var) 
And finally 
var = re.sub('<!--.*?-->', '' var)# wipes it all out from between along with. 

而且你也不需要美味的湯。如果你瞭解它的工作原理,你也可以使用它們來剝皮數據。