如何从文本文件中提取整数,放入列表,排序,在 python 中获取长度和中位数?

问题描述 投票:0回答:1

我有一个桌面文件(文字、数字和标点符号的段落)。我只需要获取数字,对它们进行排序,打印排序列表、长度和中位数。我可以打开、阅读和提取数字,但所有数字(甚至我的两位数)都打印在“ “。我被允许使用进口统计数据。

我尝试过几次。我知道我需要一个 .split()、.strip() 和 .append。我只是不知道在哪里。

from statistics import median
def sorting_file(): 
    with open('C:\\Users\\wildk\\Desktop\\Numbers_in_text.txt', 'r') as f:
        for line in f:
            words = line.split().strip('n')
            for i in words:
                for number in i:
                     number = number.rstrip('n')
                    if(number.isnumeric()):
                         print(number)
def get_median():    
     for median in number:
        number = sorted
        median = sorted (number) [len(number)//2]
        print(median, len )                 

if __name__=='__main__':
     sorting_file()
     get_median()

enter image description here

python sorting text-files median alphanumeric
1个回答
0
投票

get_median
函数有几个问题:

  • 它引用了
    number
    ,但那是一个未定义的名字。
  • 在迭代期间,您将
    number
    重新定义为
    sorted
    ,这是一个函数。 (这里没有任何排序)
  • sorted(number)
    sorted(sorted)
    相同,这是没有意义的。
  • 如果那个
    sorted
    调用可以工作,你不能索引它,因为它是一个迭代器,而不是一个列表。
  • print(number, len)
    会打印两个函数。我不明白这有什么用。
  • 此外,您已经包含了
    median
    statistics
    功能,所以您根本不需要
    get_median

那么

sorting_file
也有问题:

  • 它在列表中调用
    .strip('n')
    。列表没有这样的方法,而且无论如何你都希望字母
    n
    发生什么是一个谜
  • for number in i
    正在迭代单词的各个字符 (
    i
    )。这没有用。这个词本身就是你感兴趣的。
  • .rstrip('n')
    似乎没有任何作用
  • 该函数只是打算打印数字,但实际上并没有将它们转换为数字,也没有将它们收集在某个列表中以用于获取中位数

这里是考虑到以上几点的更正:

from statistics import median

def sorting_file(): 
    with open('text.txt', 'r') as f:
        for line in f:
            return [int(i) for i in line.split() if i.isnumeric()]

res = median(sorting_file())
print(res)
© www.soinside.com 2019 - 2024. All rights reserved.