python解析输入,输入的总和

时间:2013-11-21 10:09:27

标签: python parsing loops percentage readlines

我正在尝试使用以下格式解析文件

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

(文件更长,并且按学年(1999年)和不同的研究(如'I')分开。我唯一需要处理的是最后一个数字(如77,77,6)这个数字是一个百分比。最终的目标是制作一个由10个条形组成的BarChart,条形图由文件中百分比的百分比(总和)组成条形图的范围(比如一个条形图来自70到80% - >然后如果上面的输入是整个文件,总和将是2,并且条形图将是高度2.但我的第一个问题是我不知道如何解析输入..我是认为python应该读取行,然后从索引(所以制作一个范围)开始,百分比数字开始与数字做“somethinh”( - >看看它们落在哪个条形图范围内然后制作一个循环,表示百分比在条形图中落后的次数总和。)

希望有人可以帮助我!

1 个答案:

答案 0 :(得分:0)

使用str.rsplit()将字符串拆分为单词,从右侧开始计算。如果你传入None它将在任意宽度的空格上分割,给你整齐的剥离字符串和计数,让你在第一列中保留空格。

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

>>> '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