我试图从字符串中删除长度小于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)
如果您想要替代正则表达式:
new_string = ' '.join([w for w in old_string.split() if len(w)>3])
Run Code Online (Sandbox Code Playgroud)