0

私は、サッカーのスコアに対するユーザー入力を処理するPythonでプログラムを作成しています。例えば: Newcastle United 4 - 6 Manchester united

上記のスコアは、次のように書くこともできます

NUFC 4-6 MUFCまた、newcastle 4-6 manuなどなど......

私の目的は、チーム名とスコアを抽出することです :Newcastle United、、、。46Manchester United

これを行う方法についての提案が必要です。私が考えることができる1つの方法は正規表現ですが、正規表現に精通していないので、ここで助けを求めています。ありがとう

4

3 に答える 3

3

次の正規表現はそれを行います:

^(.*?) *(\d+) *- *(\d+) *(.*)$

グループ:

  • グループ1:左チーム
  • グループ2:左チームのスコア
  • グループ3:正しいチームスコア
  • グループ4:適切なチーム
于 2013-02-05T19:06:04.257 に答える
2

これはうまくいくようです...

>>> re.match(r'(.*?)\s*(\d+)\s*\-\s*(\d+)\s*(.*)',s).groups()
('Newcastle United', '4', '6', 'Manchester united')
于 2013-02-05T19:05:55.983 に答える
1

一般的に、スコアは5つの項目のリストとして説明できるように見えます。

  1. 任意のテキスト
  2. 数字の文字列
  3. ハイフン
  4. 数字の文字列
  5. 任意のテキスト

ハイフンの両側にスペースがある場合とない場合があります。

以下が機能するはずです。

g = re.match("(.*) ([0-9]+) ?- ?([0-9]+) (.*)", user_input)
if g:
    team1 = g.group(1)
    team1_score = g.group(2)
    team2_score = g.group(3)
    team2 = g.group(4)

呼び出しの番号は、group()左から右へ、正規表現の括弧に対応します。

于 2013-02-05T19:07:04.333 に答える