首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python解析输入,生成输入的和

python解析输入,生成输入的和
EN

Stack Overflow用户
提问于 2013-11-21 10:09:27
回答 1查看 124关注 0票数 0

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

代码语言:javascript
复制
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。但我的第一个问题是,我不知道如何解析输入。)我在想python应该读取这些行,然后从索引(因此形成一个范围)中,百分比数开始对数字“做一些事情”(->查看它们下降的条形图的范围,然后对该条形图中百分比下降的次数之和进行循环.)

希望有人能帮我!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-21 10:48:44

使用str.rsplit()将字符串拆分为单词,从右边计数。如果传入None,它将在任意宽度的空格上拆分,为您提供整洁的剥离字符串,并进行计数,使您可以在第一列中保留空白。

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

代码语言:javascript
复制
>>> 'Willem Jan van Steen         9859  77\n'.rsplit(None, 2)
['Willem Jan van Steen', '9859', '77']

在这里,名称中的空格被保留下来,但后面的两个数字现在是列表中的单独元素。最后的换行线不见了。

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

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20117928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档