Select 元素不在列表中

Select element not in list

我理解人们通常如何 select 一个不在列表中的元素。但是,根据我的代码,该方法似乎不起作用。

所以我有一个包含以下数据的文本文件: 最小值:5,6,1 最大值:5,6,1 平均:5,6,1

我只想 select 文件中的数字并从中创建一个列表。我试过按类型来做,但这不起作用,因为列表中的所有元素都被算作字符串。

所以我整理了以下代码:

inFile_test = open('in_test.txt','r')
while True:
    lines = inFile_test.readlines()
    for line in lines:
        words = [lines[0][0:3] , lines[1][0:3] , lines[2][0:3]]
        print str(words)
        values = []
        for element in lines:
            if element not in words:
                values.append(element)
            print str(values)

    else:
        break

我得到以下输出:

['Min', 'Max', 'Avg']
['Min: 5,6,1\n']
['Min: 5,6,1\n', 'Max: 5,6,1\n']
['Min: 5,6,1\n', 'Max: 5,6,1\n', 'Avg: 5,6,1']

我感觉我的列表结构有问题,阻止了代码 运行 正常运行,但我不确定它是什么。

如果不是那样,请提供有关 select 仅从我的文本文件中提取数字的更好方法的建议。

坦率地说,您的代码一团糟。为什么要将逻辑包装在 while 循环中?无论如何它都会在第一次迭代后终止。

使用 file.read 代替 readlines 进行简化:

with open('in_test.txt') as f:
    data = f.read()

然后,只需执行以下操作:

>>> data
'Min: 5,6,1 Max: 5,6,1 Avg: 5,6,1'
>>> [int(c) for c in data if c.isdigit()]
[5, 6, 1, 5, 6, 1, 5, 6, 1]

您可以使用pandas

import pandas as pd
df = pd.read_csv('in_test.txt',sep=r":|,",header=None,index_col=0).T

如果要逐行阅读

with open('in_test.txt','r') as inFile_test:
    for line in inFile_test:
        word,numbers = line.split(":")
        numbers_as_float = [float(num) for num in numbers.split(",")]
        print(word,numbers_as_float)