从字符串中删除长度小于4的单词

bla*_*mba 8 python regex

我试图从字符串中删除长度小于4的单词.

我用这个正则表达式:

 re.sub(' \w{1,3} ', ' ', c)
Run Code Online (Sandbox Code Playgroud)

虽然这会删除一些字符串,但是当2-3个长度小于4的单词出现时它会失败.喜欢:

 I am in a bank.
Run Code Online (Sandbox Code Playgroud)

它给了我:

 I in bank. 
Run Code Online (Sandbox Code Playgroud)

怎么解决这个?

Mar*_*ers 14

不要包括空格; \b改为使用单词边界锚点:

re.sub(r'\b\w{1,3}\b', '', c)
Run Code Online (Sandbox Code Playgroud)

这将完全删除最多3个字符的单词:

>>> import re
>>> re.sub(r'\b\w{1,3}\b', '', 'The quick brown fox jumps over the lazy dog')
' quick brown  jumps over  lazy '
>>> re.sub(r'\b\w{1,3}\b', '', 'I am in a bank.')
'    bank.'
Run Code Online (Sandbox Code Playgroud)


Vid*_*a G 8

如果您想要替代正则表达式:

new_string = ' '.join([w for w in old_string.split() if len(w)>3])
Run Code Online (Sandbox Code Playgroud)