在python中使用Regex多次删除孤立出现的字符和数字

在python中使用Regex多次删除孤立出现的字符和数字,python,regex,python-3.x,regex-negation,regex-greedy,Python,Regex,Python 3.x,Regex Negation,Regex Greedy,data=我有一个数据,比如“我们96 35实验室的不同人员将准备43 65 66 43升左右的lb添加卡那霉素” 我想把它打印成“我们实验室的许多人将准备43升左右的lb添加卡那霉素” 请注意:不应移除43升。因为它在数字后面有文本,因此不孤立 我尝试使用以下方法:- data = re.sub('\s[a-z]\s', ' ', data) data = re.sub('\s[a-z]\s', ' ', data) data = re.sub('\s[a-z]\s', ' ', data)

data=我有一个数据,比如“我们96 35实验室的不同人员将准备43 65 66 43升左右的lb添加卡那霉素”

我想把它打印成“我们实验室的许多人将准备43升左右的lb添加卡那霉素”

请注意:不应移除43升。因为它在数字后面有文本,因此不孤立

我尝试使用以下方法:-

data = re.sub('\s[a-z]\s', ' ', data)
data = re.sub('\s[a-z]\s', ' ', data)
data = re.sub('\s[a-z]\s', ' ', data)
data = re.sub('\s[a-z]\s', ' ', data)
要删除4个孤立的“a”,我必须执行4次相同的任务。孤立的数字也是如此

是否有更好的正则表达式版本可以用于相同的应用程序???
  • 我将使用
    \b
    (单词边界)仅替换“单词”(不附加到其他字母)的数字。如果要删除的字符串位于字符串的开头/结尾,则搜索前后的空格会使您错过匹配项
  • 我将使用相同的
    \b
    来隔离单个字母(鉴于您的尝试,您希望删除所有单个字母)
更换后,会有超过1个空间,所以我会在比赛后使用它。代码:

import re

s = "various people in our 96 35 lab will a a a a prepare 43 65 66 43liter or so of lb add kanamycin"

print(re.sub(r"\b\d+\b *|\b[a-z]\b *","",s))
结果:

various people in our lab will prepare 43liter or so of lb add kanamycin
我们可以使用组进一步分解正则表达式,因为开始和结束是相同的:

print(re.sub(r"\b(\d+|[a-z])\b *","",s))

你可以这样做:

\b(?:\d+|[a-z])\b\s+
看。
Python
中,这是:

import re

string = "various people in our 96 35 lab will a a a a prepare 43 65 66 43liter or so of lb add kanamycin"
rx = re.compile(r'\b(?:\d+|[a-z])\b\s+')

new_string = rx.sub('', string)
print(new_string)
# various people in our lab will prepare 43liter or so of lb add kanamycin

请提供一套规则,描述您希望删除的文本。我要删除的所有孤立字符(如a、i)和纯数字(如23、95)。问题是我首先尝试使用字符,但我的正则表达式在一次过程中只删除了一次出现的“a”,其余的a保持不变。我想在一次过程中消除所有此类孤立的“a”事件有一种更精确的方法,请接受您最喜欢的答案