-2

ファイル内に含まれるいくつかのデータを解析しようとしています:

>in:12 out:8 John

>in:20 out:12 Fred

>in:8 out:2 Danny

in最大値を見つけて、誰が最大値を持っているかを見つけたいと思いますin(私の例では Fred がそうしています)。

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 などの標準交換フォーマットを使用し、標準ライブラリーのパーサーを使用することをお勧めします)。私はしたい

  • and属性などPersonでクラスを作成するinout
  • 入力ファイルから行を取得し、その行に有効なデータが含まれている場合に新しいPerson
  • Personという入力ファイルからのリストを作成しますpersons
  • このリストを で昇順に並べ替えますin:persons_sorted = sorted(persons, key=lambda p: p.in)
  • 最大を取得します。max_in_person = persons_sorted[-1]
于 2012-05-21T14:30:50.740 に答える