我正在尝试使用以下格式解析文件
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”( - >看看它们落在哪个条形图范围内然后制作一个循环,表示百分比在条形图中落后的次数总和。)
希望有人可以帮助我!答案 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