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

如何用Python从文本文件提取整数并生成列表、排序、获取长度及中位数

解决方法

你的代码存在几个核心问题:

  • 遍历每个字符导致多位数被拆分成单个数字输出
  • 未将提取的数字存储到列表中,后续无法进行排序和中位数计算
  • get_median函数逻辑混乱,变量未正确定义且无法获取前一步的数字数据

以下是修正后的完整代码,附带详细说明:

from statistics import median

def extract_integers_from_file(file_path):
    integers = []
    # 定义需要去除的标点符号,可根据实际文件内容补充
    punctuation = ".,!?;:\"'-()[]{}"
    
    with open(file_path, 'r') as f:
        for line in f:
            # 按空格分割每行成单词列表
            words = line.split()
            for word in words:
                # 去除单词前后的标点符号
                cleaned_word = word.strip(punctuation)
                # 判断清理后的字符串是否为正整数
                if cleaned_word.isnumeric():
                    # 转换为整数并添加到列表
                    integers.append(int(cleaned_word))
    return integers

if __name__ == '__main__':
    file_path = 'C:\\Users\\wildk\\Desktop\\Numbers_in_text.txt'
    # 提取文件中的整数列表
    num_list = extract_integers_from_file(file_path)
    # 对整数列表排序
    sorted_nums = sorted(num_list)
    
    # 打印结果
    print("排序后的整数列表:", sorted_nums)
    print("列表长度:", len(sorted_nums))
    if sorted_nums:  # 避免空列表调用median时报错
        print("中位数:", median(sorted_nums))
    else:
        print("列表为空,无法计算中位数")

关键修正说明:

  • 提取完整整数:不再遍历单个字符,先分割出单词,清理前后标点后判断是否为完整数字,确保多位数被正确识别
  • 存储数据到列表:用append()将提取到的整数存入列表,为后续排序和计算提供数据基础
  • 函数职责拆分:extract_integers_from_file专注于从文件提取整数并返回列表,主函数负责排序、计算和结果打印
  • 异常情况处理:添加空列表判断,避免无数字时调用median()报错
  • 标点清理:通过strip(punctuation)去除单词前后的常见标点,确保类似"123,"或"(456)"的数字能被正确识别

如需处理负整数

如果文件中包含负整数(如"-789"),可修改判断逻辑:

if cleaned_word.lstrip('-').isnumeric() and cleaned_word.count('-') <= 1:
    integers.append(int(cleaned_word))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 17:07:18