ファイル内に含まれるいくつかのデータを解析しようとしています:
>in:12 out:8 John
>in:20 out:12 Fred
>in:8 out:2 Danny
in
最大値を見つけて、誰が最大値を持っているかを見つけたいと思いますin
(私の例では Fred がそうしています)。
これを試して
>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()
これは、そこにある非標準のデータ形式です。したがって、非標準のパーサーを作成する必要があります (JSON などの標準交換フォーマットを使用し、標準ライブラリーのパーサーを使用することをお勧めします)。私はしたい
Person
でクラスを作成するin
out
Person
Person
という入力ファイルからのリストを作成しますpersons
。in
:persons_sorted = sorted(persons, key=lambda p: p.in)
max_in_person = persons_sorted[-1]