繁体   English   中英

python regex替换字符串中的所有单个单词字符

[英]python regex to replace all single word characters in string

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

输入:“这是一辆大汽车,座位宽敞”

我的输出应该是:

输出:“这是一辆大汽车,有宽敞的座位”

在这里我用的是表达

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

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

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

编辑:我刚刚看到,这是Wiktor Stribitriew首先在评论中提出的。 归功于他-发布此消息时我还没有看到。

您也可以使用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"

您可以在此处了解有关在替换字符串时输入正则表达式的更多信息: 如何在string.replace中输入正则表达式?

这是通过拆分字符串并使用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'

编辑

您可以使用:

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)

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

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

它可以清除所有内容,并且比Beautiful Soup更快,更好,更清洁。 批处理文件是“”开始的地方,并且只能从本地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.

而且您不需要美丽的汤。 如果您了解数据的工作原理,则还可以使用它们对数据进行处理。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM