删除不包含特定文本Python的行

2024-05-26 04:24:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个表格文件,如下所示:

query_name      KEGG_KOs
PROKKA_00013    NaN
PROKKA_00015    bactNOG[38]
PROKKA_00017    NA|NA|NA
PROKKA_00019    K00240
PROKKA_00020    K00246
PROKKA_00022    K02887

我正在尝试创建一个脚本,以便在第2列('KEGG_KOs')不以“K0”开头时遍历并删除整行。我正在尝试创建一个输出:

^{pr2}$

以前的回复都提到过pandas DataFrame,但我没有幸使用这些回复来提供帮助。任何人都将不胜感激,干杯。在

我试过了(但这只分离出一个特定的K0线。在

df = pd.read_csv("eggnog.txt", delimiter="\t", names=["#query_name", "KEGG_KOs"])
print(df.loc[df['KEGG_KOs'] == 'K00240'])

Tags: 文件namedfnanquery表格nakegg
2条回答

^{}^{}^{}与{}一起使用作为字符串^和参数na=False的开头,因为缺少值:

df1 = df[df['KEGG_KOs'].str.startswith('K0', na=False)]
print (df1)
     query_name KEGG_KOs
3  PROKKA_00019   K00240
4  PROKKA_00020   K00246
5  PROKKA_00022   K02887

或者:

^{pr2}$

您可以使用open as read和write。假设原始文件另存为旧.txt更新后的文件将另存为新建.txt在

text = ''
with open("old.txt", 'r') as org:
    next(org)
    for line in org:
        data = line.strip().split()
        if data[1].startswith("K0"):
            text = text + data[0] + " "+ data[1] + '\n'

w = open('new.txt', 'w')
w.write("query_name"+" "+ "KEGG_KOs\n")
w.write(text)
w.close()

相关问题 更多 >