读取文件后从列表中获取特定元素

时间:2019-05-08 19:52:06

标签: python readfile

我正在使用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个元素,并且该列表中的索引将仅对应于字符而不是化合物。

1 个答案:

答案 0 :(得分:0)

因此,假设您的文件与上面相同,则看起来您具有原始测试格式的列表。您可以使用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)