如何检查一个数字与另一个数字的接近程度



我有一个文本文件,看起来像:

John: 27
Micheal8483: 160
Mary Smith: 57
Adam 22: 68
Patty: 55
等等

等等。它们是用户名,这就是为什么它们的名字偶尔包含数字的原因。我想做的是检查它们的每个数字(":"后面的数字(,并获取 3 个名称,这些名称具有最接近整数值的数字(特别是命名为 targetNum(。它将永远是积极的。

我已经尝试了多种方法,但我是 Python 的新手,我不确定如何解决这个问题。任何帮助不胜感激!

您可以将文件解析为名称/编号对列表。然后按数字和targetNum之间的差异对列表进行排序。然后,列表的前三项将包含所需的名称:

users = []
with open("file.txt") as f:
    for line in f:
        name, num = line.split(":")
        users.append((name, int(num)))
targetNum = 50
users.sort(key=lambda pair: abs(pair[1] - targetNum))
print([pair[0] for pair in users[:3]])  # ['Patty', 'Mary Smith', 'Adam 22']

你可以在这里使用一些正则表达式配方:

import re
pattern=r'(w.+)?:s(d+)'
data_1=[]
targetNum = 50
with open('new_file.txt','r') as f:
    for line in f:
        data=re.findall(pattern,line)
        for i in data:
            data_1.append((int(i[1])-targetNum,i[0]))
print(list(map(lambda x:x[1],data_1[-3:])))

输出:

['Mary Smith', 'Adam 22', 'Patty']

相关内容

  • 没有找到相关文章

最新更新