python正则表达式替换字符串中的所有单个单词字符

时间:2017-02-06 11:11:38

标签: python regex django

我正在尝试删除字符串中的所有单个字符

  

输入:"这是一辆大车,它有一个宽敞的座位"

我的输出应该是:

  

输出:"这是一辆大车,它有宽敞的座位"

我在这里使用表达式

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

这与字符串中的第一个单个字符匹配...

任何帮助将不胜感激...在此先感谢

5 个答案:

答案 0 :(得分:2)

通过分割字符串以及使用lenstr.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'

答案 1 :(得分:2)

编辑:我刚刚看到这是WiktorStribiż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?

答案 2 :(得分: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)

答案 3 :(得分:0)

删除字符串中两个已知标记或两个已知字符之间的单词,字符,字符串或任何内容的最快方法是使用直接和本地C方法,使用RE和Common,如下所示。

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

它删除了一切,比美丽的汤更快,更好,更清洁。 批处理文件是&#34;&#34;得到了那里的开头,只是借用了本地C&#34;的批处理和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.

你不需要美丽的汤。如果您了解其工作原理,也可以使用它们来处理数据。

答案 4 :(得分:0)

re.sub(r' \w{1} |^\w{1} | \w{1}$', ' ', input)