首页 > 解决方案 > 如何多次拆分输入文本

问题描述

我有一个输入文件,其结构如下:年份由“-”分隔,学习由“=”分隔,学生及其表现由“\t”分隔。我的目标是解析输入文件以获取数字。当我最终得到数字时,我需要最后两个数字,以百分比表示学生的表现。问题是,当我通过例如连字符分割输入时,我得到一个列表,但我不知道当时该做什么,因为我不能再次剥离它,因为它现在是一个列表。基本上,它是一个以毫秒为单位的性能时间长列表,然后是一个以百分比表示的性能,如下所示:Frank Pierre 1398 81。这是我想从所有不同名称中检索的第二个数字列表,

我已经能够通过使用 for 循环遍历输入文件中的所有项目来检索数字,然后如果它们是整数,则将它们附加到新列表中,但问题是我的解决方案使用的事实是所有最后的数字小于或等于一百(因为它们是百分比)最终将它们从新列表中删除并将它们添加到新的百分比列表中。但是,我希望程序以更通用的方式处理具有相同结构的输入文件。

想象一个具有相同结构的文件,但在某些情况下学生姓名后的第一个数字低于 100。我的程序会将其识别为百分比,因为它低于 100,但事实并非如此!只有第一个数字之后的第二个数字代表百分比。这就是为什么我认为最好解析输入文件,以便将数字与其他所有内容分开,然后使用例如索引检索第二个数字。我只是不知道如何做到这一点。

如果有人知道如何完成这项工作,那就太好了。代码必须在 python 2.7 中,我不能使用任何外部模块,我必须自己定义函数。我只需要能够获得第二个数字的列表,这样我就可以使用它们对它们进行分析。

我目前有以下代码:

'with open("statistics_input.txt", "r") as input:
    information = input.read()
    splitted = information.split('-')
first = splitted[0]'

问题是我现在最终得到了一个包含 6 个不同索引的列表,每年一个,我不知道如何进一步解析这个。我首先将第一年作为变量,但是我现在如何检索那一年的数字并每年重复该过程?

标签: pythoninputtextstructure

解决方案


有很多不同的方法可以做你正在尝试的事情。不过,我有几个建议:

  • 拆分后'-',如您所说,您有一个列表。但是,该列表中的条目都是字符串,如果您想在一年的记录中拆分为研究,那么您可以取列表中的一个字符串,并将其拆分为'='. 这将为您提供另一个列表,但条目也是字符串,可以适当处理。
  • 要获取一行中的最后一个数字,您可以将该行拆分为空格 ( ' '),并获取结果列表的最后一个元素。您需要知道这条线是学生(而不是一年或学习标记),但听起来您可能已经想通了。

推荐阅读