0

我正在尝试解析具有以下格式的文件

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 应该读取这些行,然后从百分比数字开始用数字“做某事”的索引(因此建立一个范围)(-->查看它们落在条形图的哪个范围内,然后循环计算百分比在该条形图中下降的次数的总和..)

希望可以有人帮帮我!

4

1 回答 1

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
于 2013-11-21T10:48:44.810 回答