python解析输入,求inpu的和

2024-04-18 18:57:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用以下格式解析一个文件

1999
I
Willem Jan van Steen         9859  77
Guillaume Kielmann           5264  77
Guillaume Bos                8200   6

(档案要长得多,按学年(1999年)和不同学科(I)分开。我唯一需要处理的是最后一个数字(比如77,77,6)这个数字是一个百分比。最后的目标是制作一个由10个条形图组成的条形图,条形图由文件中某个百分比落入条形图范围的次数(总和)组成(例如,从70%到80%的条形图)-->;如果上述输入是整个文件,则总和为2,条形图的高度为2。但我的第一个问题是我不知道如何解析输入。。我在想python应该读取这些行,然后从索引(这样就形成了一个范围)开始,百分比数字开始对数字进行“处理”(-->;查看它们在条形图的哪个范围内下降,然后对该条形图中百分比下降多少次的总和进行循环…)

希望有人能帮我!你知道吗


Tags: 文件gt格式数字vanjan百分比条形图
1条回答
网友
1楼 · 发布于 2024-04-18 18:57:01

使用^{}将字符串拆分为单词,从右边开始计数。如果您传入None,它将在任意宽度的空格上拆分,为您提供整洁的stripped字符串,并提供一个计数,让您将空格保留在第一列中。你知道吗

这意味着什么的简短演示:

>>> 'Willem Jan van Steen         9859  77\n'.rsplit(None, 2)
['Willem Jan van Steen', '9859', '77']

在这里,名称中的空格被保留,但末尾的两个数字现在是列表中的独立元素。结尾的那句新词不见了。你知道吗

如果在打开的文件对象上循环,则会得到单独的行,从而提供一种逐行解析文件的方法:

with open(inputfilename) as inputfh:
    for line in inputfh:
        columns = line.rsplit(None, 2)
        if len(columns) < 3:
            continue  # not a line with name and numbers
        percentage = int(columns[2])
        if 70 <= percentage <= 80:
            # we have a line that falls within your criteria

相关问题 更多 >