下面这句话我想用‘(数字)/(.;数字)’来消除所有的东西:
在所有生物中,从细菌到人类,DNA和染色质总是与结合蛋白联系在一起,而结合蛋白组织着它们的结构(1;2;3)。许多这些结构蛋白是分子桥梁,可以结合在两个或多个不同的DNA位点,形成循环。例如,细菌DNA是由类组蛋白H-NS环环而形成的,它有两个不同的DNA结合结构域(4)。在真核生物中,转录因子和RNA聚合酶的复合物能稳定增强子-启动子环(5;6;7;8),而HP1 (9)、组蛋白H1 (10)和多梳-抑制子复合物PRC1 1/2 (11;12)则形成非活性染色质。蛋白质还与特定的DNA序列结合,形成较大的结构,如核仁和组蛋白位点,或Cajal和早幼粒白血病小体(13;14;15;16;17;18)。分子桥与染色质活性区和非活性区的选择性结合也被认为是形成富含局部相互作用的拓扑相关结构域(-regions)的一种可能机制。
我希望它的形式是:
在所有生物中,从细菌到人类,DNA和染色质总是与结合蛋白联系在一起,这些结合蛋白组织着它们的结构。许多这些结构蛋白是分子桥梁,可以结合在两个或多个不同的DNA位点,形成循环。例如,细菌DNA被类组蛋白H-NS环化和压缩,该蛋白有两个不同的DNA结合结构域.在真核生物中,转录因子和RNA聚合酶的复合物能稳定增强子-启动子环,而HP1、组蛋白H1和多梳-抑制物复合物PRC1 1/2则形成非活性染色质。蛋白质还与特定的DNA序列结合,形成较大的结构,如核仁和组蛋白位点,或Cajal和早幼粒白血病小体。分子桥与染色质活性区和非活性区的选择性结合也被认为是形成富含局部相互作用的拓扑相关结构域(-regions)的一种可能机制。
我的尝试如下:
import re
x=re.sub(r'\(.+; \d+\)', '', x) # eliminate brackets with multiple numbers
#### NOTE: there are 2 spaces between the last ';' and the last digit
x=re.sub(r'\d+\)', '', x) # eliminate brackets with single number
我的产出是:
在所有生物中,从细菌到人类,DNA和染色质总是与结合蛋白联系在一起,这些结合蛋白组织着它们的结构。
所以很明显我的代码漏掉了什么。我认为'(.+)‘将标识包含非任意字符的所有括号,然后我可以进一步指定所有以';number’结尾的括号。
我只想要一种灵活的方法,在所有地方用“(数字”和“数字”)索引一个句子,并删除所有之间的所有内容.
发布于 2017-03-30 15:32:59
也许你可以试着用这个模式
re.sub('\([0-9; ]+\)', '', x)
它移除至少在一个数字、一个";“或一个空格中出现的所有括号。
我认为使用r前缀的情况不是这样的。
发布于 2017-03-30 15:31:54
发布于 2017-03-30 15:32:17
尝试以下正则表达式:
r'\s\((\d+\s?;?\s?)+\)'
此正则表达式将匹配括号内的一组或多组数字(后面是空格/分号)。
在收集数字之前似乎总是有一个空格,所以匹配应该有助于“尾随空间”。
https://stackoverflow.com/questions/43122098
复制相似问题