-2

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

>in:12 out:8 John

>in:20 out:12 Fred

>in:8 out:2 Danny

我想找到最大值in,并找到最大值in(弗雷德在我的例子中)。

4

2 回答 2

2

试试这个

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

第 1 组将包含分数,第 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()
于 2012-05-21T14:26:40.047 回答
2

这是一种非标准的数据格式。因此,您必须编写一个非标准解析器(更好的主意是使用像 JSON 这样的标准交换格式并使用标准库中的解析器)。ID

  • 使用和属性创建一个Personinout
  • 编写一个解析器函数,从输入文件中获取一行,如果该行包含有效数据,则创建一个新的Person
  • Person从名为persons.
  • 按升序排序此列表inpersons_sorted = sorted(persons, key=lambda p: p.in)
  • 获得最大值:max_in_person = persons_sorted[-1]
于 2012-05-21T14:30:50.740 回答