首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python文件中使用特定的关键字提取特定的单词?

如何在python文件中使用特定的关键字提取特定的单词?
EN

Stack Overflow用户
提问于 2022-05-03 06:57:31
回答 2查看 55关注 0票数 0

对不起,我对蟒蛇很陌生,从来没有受过太多的训练。

例如,我想问如何在python中提取文件‘./model/asm/草稿_km.model’中某些关键字字母的单词(这些行可以在.modelspec文件中找到):

代码语言:javascript
复制
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)来执行遗传算法。

非常感谢你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2022-05-03 07:44:39

由于您似乎正在计划修改数据,所以首先将行拆分为一个列表,然后单独处理每一行可能是有用的。

代码语言:javascript
复制
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()]

如果只需要检查子字符串,那么可以检查每一行,如下所示:

代码语言:javascript
复制
for line in lines:
    if "_kcat : 10" in line:
        print(line) # or do whatever you want

如果您需要匹配更复杂的模式,正则表达式(如的答案)是可行的方法。

票数 2
EN

Stack Overflow用户

发布于 2022-05-03 07:00:47

使用re.findall,我们可以尝试:

代码语言:javascript
复制
# 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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72095772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档