我正在寻找一个python代码来转换:
scaffold_356_1-1000_+__Genus_species
进入
scaffold_356_Gen_spe
因此,我们的想法是首先在__
部分之后将名称与3 first letters
So从Genus_species
缩减为Gen_spe
从so remove_1-1000_+_
中删除number部分
感谢您的帮助:)
我知道怎么做:
import re
name = "scaffold_356_1-1000_+__Genus_species"
name=re.sub(r'\d+\-\d*',"",name)
name = re.sub(r'__.__',"_",name)
我得到:
scaffold_356_Genus_species
看起来您正在尝试进行模式化文本操作,正则表达式非常适合这种操作。很难从一个例子中概括出来——描述转换越精确,就越容易创建一个正则表达式来实现所需的功能。关于正则表达式的Python文档是一个有用的参考:https://docs.python.org/3/library/re.html
如果我必须从您的示例和描述中归纳出一个模式,我将精心设计以下正则表达式:
如果尝试使用此正则表达式,则可以看到它会将要构造的部分提取到最终结果中:
当然,这个正则表达式只适用于非常特定的模式,如果不严格遵守该模式,它将是不可原谅的。你知道吗
你就快到了。我会把字符串分成前缀和后缀,分别修改它们,然后再把它们连接起来。你知道吗
可能不是最优雅的解决方案,但是假设您总是使用string\ 3digits\ 1digit-4digits\ uuu+\ uu string\ string的模式,它就可以工作了。你知道吗
本例使用带有捕获组的regex模式。您可能需要使用regex来了解模式的结构。如果您插入这个regex模式,regex101将为您提供每一项的可理解的解释。你知道吗
相关问题 更多 >
编程相关推荐