首页 > 解决方案 > 读取文件后从列表中获取特定元素

问题描述

我正在使用 Python,并且我有一个文本文件,其中包含以前复杂代码的结果。它写入一个名为“结果”的文件,其结构如下:

xml file name.xml

['chebi:28726', 'chebi:27466', 'chebi:27721', 'chebi:15532', 'chebi:15346']

xml file name.xml

['chebi:27868', 'chebi:27668', 'chebi:15471', 'chebi:15521', 'chebi:15346']

xml file name.xml

['chebi:28528', 'chebi:28325', 'chebi:10723', 'chebi:28493', 'chebi:15346']

etc...

我当前的代码是:

file = open("results.txt", "r")

data = file.readlines()

for a in data:

    print(a)

问题是我想获取该列表中的特定元素,例如chebi:28528,并将它们从当前的化合物转换为不同的格式。我已经为这种转换编写了代码,但是在化合物的实际转换之前的步骤中遇到了问题。

问题是我需要能够遍历文件并从该列表中选择每个元素,但我无法这样做。

如果我做

for a in data:

    for b in a:

它选择每个单独的字符而不是整个单词 ( chebi:28528)。

有没有一种方法可以遍历文本文件并仅获取特定的 Chebi 化合物,以便我可以将它们转换为所需的不同格式?Python 将整个化合物列表视为 1 个元素,并且该列表中的索引将仅对应于字符而不是化合物。

标签: pythonreadfile

解决方案


因此,假设您的文件如上所述,看起来您有原始测试格式的列表。您可以通过使用 ast 或类似的东西将它们转换为 Python 列表来循环这些单词元素。

你有正确的想法,但实际上你是在循环角色。这个怎么样?

import ast

with open('results.txt', 'r') as f:
    data = f.readlines()


for line in data:
    if '[' not in line:
        continue

    ls = ast.literal_eval(line)

    for word in ls:
        if 'chebi' in word:
            process_me(word) 

推荐阅读