2017-02-06 99 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. 

而且你也不需要美味的汤。如果你了解它的工作原理,你也可以使用它们来剥皮数据。