解析文件以获得最大值

时间:2012-05-21 14:21:18

标签: python regex

我正在尝试解析文件中包含的一些数据:

>in:12 out:8 John

>in:20 out:12 Fred

>in:8 out:2 Danny

我想找到最大in值,并找到最大值为in的人(在我的示例中为Fred)。

2 个答案:

答案 0 :(得分:2)

试试这个

>in:(\d+) out:\d+ (.*)

第1组将包含in分数,第2组将包含名称

你仍然需要在python代码中过滤组1的最大值来获取名称,因为这不是正则表达式的目的。

我不是python程序员,但这是一个好的开始

for match in re.finditer(r">in:(\d+) out:\d+ (.*)", subject):
# match start: match.start()
# match end (exclusive): match.end()
# matched text: match.group()

答案 1 :(得分:2)

这是你在那里的非标准数据格式。因此,您需要编写一个非标准的解析器(更好的想法是使用像JSON这样的标准交换格式并使用标准库中的解析器)。我

  • 创建Person课程,例如inout属性
  • 编写一个解析器函数,该函数从输入文件中取一行,如果该行包含有效数据,则创建一个新的Person
  • 从输入文件Person创建persons的列表。
  • inpersons_sorted = sorted(persons, key=lambda p: p.in)
  • 对此列表进行排序
  • 获得最大值:max_in_person = persons_sorted[-1]