You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python技术问询:数值相似度计算与文本文件目标用户名筛选

解决方法:提取数值并找到最接近targetNum的3个用户

嘿,作为Python新手遇到这种问题完全正常,我来一步步带你实现需求,代码里会加详细注释,保证你能看懂~

整体思路

  1. 读取文本文件的每一行,解析出用户名和对应的数值
  2. 计算每个数值与targetNum的绝对差值(差值越小越接近)
  3. 根据差值从小到大排序,取前3个对应的用户名

完整代码示例

假设你的文本文件名为user_scores.txt,我们可以这样写:

# 定义目标数值,你可以改成自己需要的数
target_num = 60

# 存储用户信息的列表,每个元素是(差值, 用户名, 数值)
user_list = []

# 读取文件(自动处理文件关闭,避免资源泄漏)
with open('user_scores.txt', 'r', encoding='utf-8') as file:
    for line in file:
        # 去掉每行首尾的空格、换行符
        cleaned_line = line.strip()
        # 跳过空行
        if not cleaned_line:
            continue
        
        # 按冒号分割,只分割1次(避免用户名里有冒号的情况)
        parts = cleaned_line.split(':', 1)
        # 提取用户名并去掉前后空格
        username = parts[0].strip()
        # 提取数值部分,转成整数
        try:
            score = int(parts[1].strip())
        except ValueError:
            # 如果遇到无法转成整数的行,跳过并提示
            print(f"警告:行'{cleaned_line}'的数值格式错误,已跳过")
            continue
        
        # 计算当前数值与目标数的绝对差
        diff = abs(score - target_num)
        # 将(差值, 用户名, 数值)加入列表,方便后续排序
        user_list.append( (diff, username, score) )

# 按差值从小到大排序(Python会自动按元组的第一个元素排序)
user_list_sorted = sorted(user_list)

# 取前3个(如果用户数量不足3个,就取所有)
top_closest = user_list_sorted[:3]

# 输出结果
print(f"与目标数值{target_num}最接近的3个用户:")
for idx, (diff, name, score) in enumerate(top_closest, 1):
    print(f"{idx}. {name}(数值:{score},与目标的差值:{diff})")

代码细节解释

  • 文件读取:用with open语句是Python推荐的安全写法,它会在代码块结束后自动关闭文件,不用手动写file.close()
  • 行解析:split(':', 1)确保只分割一次,比如如果用户名是Tom:Jr(虽然你的例子里没有,但提前考虑这种情况),也能正确提取用户名
  • 异常处理:加入try-except是为了避免文件里有格式错误的行导致程序崩溃,比如某行是InvalidUser: abc,会自动跳过并提示
  • 排序逻辑:把差值放在元组的第一个位置,sorted()会自动按差值从小到大排序,非常方便
  • 边界处理:如果文件里的用户数量不足3个,user_list_sorted[:3]会自动取所有用户,不会报错

测试你的示例数据

如果你的文件内容是:

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

当target_num=60时,运行代码会输出:

与目标数值60最接近的3个用户:
1. Mary Smith(数值:57,与目标的差值:3)
2. Patty(数值:55,与目标的差值:5)
3. Adam 22(数值:68,与目标的差值:8)

完全符合你的需求~

内容的提问来源于stack exchange,提问作者DevinGP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:07:34