regex re.sub用自身的部分替换字符串

时间:2018-02-19 14:41:14

标签: python regex replace

我需要替换存储在JSON文件中的部分名称,例如替换它:

"name":"S. tuberosum subsp. andigenum (ADG) 2-1-2-2" 

用这个:

"name":"S. tuberosum subsp. andigenum (ADG)" 

即。我需要删除名称后面的数字和连字符。

我正在使用re.sub,但我无法弄清楚正确的表达方式,尤其是如何用一部分替换字符串。

我试过这个:

new_text = re.sub(r"(name.[:]..*)\s\d+-+", "name.[:]..*"  , initial_text)

3 个答案:

答案 0 :(得分:0)

您只需要将要删除的部分与re.sub匹配,并将其替换为空字符串:

import re
string = '"name":"S. tuberosum subsp. andigenum (ADG) 2-1-2-2"'
print(re.sub('(\s(\d-)*\d)', '', string))

输出

"name":"S. tuberosum subsp. andigenum (ADG)"

答案 1 :(得分:0)

试试这个:

re.sub("(\d+-\d+-*)", "" , initial_text)

这将取代'number-number-(可选)',希望它有效

答案 2 :(得分:0)

你可以试试这个:

import re
s = '"name":"S. tuberosum subsp. andigenum (ADG) 2-1-2-2"'
new_s = re.sub('(?<=[A-Z]\))\s[\d-]+', '', s)

输出:

'"name":"S. tuberosum subsp. andigenum (ADG)"'