我正在寻找 python 代码以进行转换:
scaffold_356_1-1000_+__Genus_species
进入
scaffold_356_Gen_spe
所以我们的想法是首先在 __ 部分之后用 3 个首字母减少名称,所以从 Genus_species 到 Gen_spe
并从中删除 number-number 部分,以便删除 _1-1000_+_
感谢您的帮助:)
我实际上知道该怎么做:
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
请您参考如下方法:
你快到了。我会将字符串拆分为前缀和后缀并分别修改它们,然后将它们连接回去。
import re
s = 'scaffold_356_1-1000_+__Genus_species'
#Split to suffix and prefix
suffix, prefix = s.split('__')
#scaffold_356_1-1000_+, Genus_species
#Get first three characters for prefix
modified_prefix = '_'.join([s[0:3] for s in prefix.split('_')])
#Gen_spe
#Do the regex replace for digits and remove the underscore and + at end of string
modified_suffix =re.sub(r'\d+\-\d*',"",suffix).rstrip('_+\\+')
#scaffold_356
#Join the strings back
final_s = modified_suffix + '_' + modified_prefix
print(final_s)
#scaffold_356_Gen_spe
