从文本文件中删除行号并提取值以列出

Remove line numbers from text file and extract values to list

我有一个包含一些数据的 txt 文件,但它们有行号注释,我怎样才能轻松地从这里转到仅包含右侧数字的列表?

1   3.170

2   3.198

3   3.188

4   3.153

5   3.164

6   3.214

7   3.095

8   3.078

9   3.193

10  3.113

我分 3 步完成:

with open('numbers', 'r') as file:
    for line in file:
        for word in line.split():
            print(word)

然后得到结果

with open('main.py') as f:
    lines = f.read().splitlines()
print(lines)

然后我对数字进行了排序,并复制了 3 和 4 之间的值:

numbers = ('1', '3.170', '2', '3.198', '3', '3.188', '4', '3.153', '5', '3.164', '6', '3.214', '7', '3.095', '8', '3.078', '9', '3.193', '10', '3.113', '11', '3.153', '12', '3.119')
float_lst = [float(item) for item in numbers]
sor = sorted(float_lst)
print(sor)

我怎样才能让它发挥作用?

随手丢弃行号。

with open('numbers', 'r') as file:
    numbers = [float(line.rstrip('\n').split()[1]) for line in file]

如果列表理解看起来很吓人,这里有一个普通版本:

numbers = []
with open('numbers', 'r') as file:
    for line in file:
        # Trim trailing newline
        line = line.rstrip('\n')
        # Extract last item
        item = line.split()[1]
        # Convert to float, add to list
        numbers.append(float(item))

作为一般原则,不要随身携带不需要的数据。

如果某些行可能为空,您可以在删除换行符后在普通版本中添加一个 if not line: continue 条件。

numbers = []
with open('numbers', 'r') as file:
    for line in file:
        # Trim trailing newline
        line = line.rstrip('\n')
        # Skip empty lines
        if not line:
            continue
        # Extract last item
        item = line.split()[1]
        # Convert to float, add to list
        numbers.append(float(item))

你让这条路变得比它需要的更难。

for line in open('numbers'):
    print( float(line.rstrip().split()[1]) )