Python 如何匹配图案并向其添加字符
我有点像:Python 如何匹配图案并向其添加字符,python,regex,Python,Regex,我有点像: GCF_002904975:2.6672e-05):2.6672e-05. 我想在下一个冒号之前的任何GCF(任何数字)条目后面添加单词“_S”。 换句话说,我希望我的文本变成: GCF_002904975_S:2.6672e-05):2.6672e-05. 我在我的文本中一直重复着这样的模式。为什么不做一个替换呢?缩短示例字符串以使其更易于阅读: "(((GCF_001297375:2.6671e-05,GCF_002904975:2.6672e-05)...".replace
GCF_002904975:2.6672e-05):2.6672e-05.
我想在下一个冒号之前的任何GCF(任何数字)条目后面添加单词“_S”。
换句话说,我希望我的文本变成:
GCF_002904975_S:2.6672e-05):2.6672e-05.
我在我的文本中一直重复着这样的模式。为什么不做一个替换呢?缩短示例字符串以使其更易于阅读:
"(((GCF_001297375:2.6671e-05,GCF_002904975:2.6672e-05)...".replace(":","_S:")
可以将正则表达式与函数替换一起使用。下面的解决方案取决于数字始终为9位,但可以修改以适用于其他情况
test_str = '(((GCF_001297375:2.6671e-05,GCF_002904975:2.6672e-05)0.924:0.060046136,GCF_000144955:0.036474926,((GCF_001681075:0.017937143,...'
new_str = re.sub(r"GCF_\d{9}", lambda x: x.group(0) + "_S", test_str)
print(new_str)
#(((GCF_001297375_S:2.6671e-05,GCF_002904975_S:2.6672e-05)0.924:0.060046136,GCF_000144955_S:0.036474926,((GCF_001681075_S:0.017937143,...
这可以通过
re.sub
功能轻松完成。工作示例如下所示:
import re
inp_string='(((GCF_001297375:2.6671e-05,GCF_002904975:2.6672e-05)0.924:0.060046136,(GCF_000144955:0.036474926,((GCF_001681075:0.017937143,...'
if __name__ == "__main__":
outp_string = re.sub(r'GCF_(?P<gfc_number>\d+)\:', r'GCF_\g<gfc_number>_S:', inp_string)
print(outp_string)
重新导入
inp_字符串='((GCF_001297375:2.6671e-05,GCF_002904975:2.6672e-05)0.924:0.060046136,(GCF_000144955:0.036474926,((GCF_001681075:0.017937143,…)
如果名称=“\uuuuu main\uuuuuuuu”:
输出字符串=re.sub(r'GCF_(?P\d+)\:',r'GCF_g\u S:',输入字符串)
打印(输出字符串)
这段代码给出了以下结果,这正是您所需要的:
((GCF_001297375_S:2.6671e-05,GCF_002904975_S:2.6672e-05)0.924:0.060046136,(GCF_000144955_S:0.036474926,((GCF_001681075_S:0.017937143,…)
有关更多信息,请查看文档:
请花点时间阅读帮助中心中的。堆栈溢出上的格式与其他网站不同。您的文章越好看,其他人就越容易阅读和理解。@Mariano,有没有办法提供一个简短的示例;鉴于篇幅太长,很难理解