对不起,我对蟒蛇很陌生,从来没有受过太多的训练。
例如,我想问如何在python中提取文件‘./model/asm/草稿_km.model’中某些关键字字母的单词(这些行可以在.modelspec文件中找到):
m_BSORx_kcat : 10
m_ENTERH_kcat : 10
m_TRPTRS_kcat : 10
m_EX_remnant1_e_kcat : 10
m_SCYSSL_kcat : 10
m_RNMK_kcat : 10
m_TAGtex_kcat : 10
m_URIDK2r_kcat : 10
m_TRPt2rpp_kcat : 10
m_GLUSy_kcat : 10
m_VPAMTr_copy2_kcat : 10
m_EX_galctn__L_e_km : 0.001
m_EX_galt_e_km : 0.001
m_EX_dgmp_e_km : 0.001
m_EX_galur_e_km : 0.001
m_EX_gam_e_km : 0.001
m_EX_gam6p_e_km : 0.001
m_EX_gbbtn_e_km : 0.001我想通过过滤“.modelspec: 10”在一个大的‘_kcat’文件中提取它们,并能够以m_BSORx_kcat : 10, m_ENTERH_kcat : 10, m_TRPTRS_kcat : 10, m_EX_remnant1_e_kcat : 10, m_SCYSSL_kcat : 10, m_RNMK_kcat : 10, m_TAGtex_kcat : 10, m_URIDK2r_kcat : 10, m_TRPt2rpp_kcat : 10, m_GLUSy_kcat : 10, m_VPAMTr_copy2_kcat : 10的形式获取它们。
我的最终目标是能够随机重新分配10%的值(-1,1)来执行遗传算法。
非常感谢你的帮助。
发布于 2022-05-03 07:44:39
由于您似乎正在计划修改数据,所以首先将行拆分为一个列表,然后单独处理每一行可能是有用的。
with open("./models/asm/Draft_km.modelspec") as f:
# read lines, skipping empty lines and remove trailing whitespace
lines = [line.rstrip() for line in f if line.strip()]如果只需要检查子字符串,那么可以检查每一行,如下所示:
for line in lines:
if "_kcat : 10" in line:
print(line) # or do whatever you want如果您需要匹配更复杂的模式,正则表达式(如的答案)是可行的方法。
发布于 2022-05-03 07:00:47
使用re.findall,我们可以尝试:
# use this to read all lines into a string
with open('./models/asm/Draft_km.modelspec', 'r') as file:
inp = file.read()
# otherwise we can hard code the data you showed in your question here
inp = """m_BSORx_kcat : 10
m_ENTERH_kcat : 10
m_TRPTRS_kcat : 10
m_EX_remnant1_e_kcat : 10
m_SCYSSL_kcat : 10
m_RNMK_kcat : 10
m_TAGtex_kcat : 10
m_URIDK2r_kcat : 10
m_TRPt2rpp_kcat : 10
m_GLUSy_kcat : 10
m_VPAMTr_copy2_kcat : 10
m_EX_galctn__L_e_km : 0.001
m_EX_galt_e_km : 0.001
m_EX_dgmp_e_km : 0.001
m_EX_galur_e_km : 0.001
m_EX_gam_e_km : 0.001
m_EX_gam6p_e_km : 0.001
m_EX_gbbtn_e_km : 0.001"""
matches = re.findall(r'\b\w+_kcat : \d+(?:\.\d+)?', inp)
output = ', '.join(matches)
print(output)这些指纹:
m_BSORx_kcat : 10,m_ENTERH_kcat : 10,m_TRPTRS_kcat : 10,m_EX_remnant1_e_kcat : 10,m_SCYSSL_kcat : 10,m_RNMK_kcat : 10,m_TAGtex_kcat : 10,m_URIDK2r_kcat : 10,m_TRPt2rpp_kcat : 10,m_GLUSy_kcat : 10,m_VPAMTr_copy2_kcat : 10
https://stackoverflow.com/questions/72095772
复制相似问题