1
if re.findall(r"i am .*", a):
    reg = re.compile(r" i am ([\w]+).*?$")
    print('How long have you been {}?'.format(*reg.findall(a)))

だから私が入力した場合:

i am struggling with life...

出力する必要があります:

How long have you been struggling?

しかし、何らかの理由でタプルエラーが発生しますか?

ちなみに a は単なる入力フィールドです。

Traceback (most recent call last):
  File "program.py", line 14, in <module>
    print('How long have you been {}?'.format(*reg.findall(a)))
IndexError: tuple index out of range
4

1 に答える 1

2

2 番目の正規表現が一致しません:

re.compile(r" i am ([\w]+).*?$")

スペースから始まるからです。その最初のスペースを削除すると、正常に機能します。

>>> a = 'i am struggling with life...'
>>> reg = re.compile(r" i am ([\w]+).*?$")
>>> reg.findall(a)
[]
>>> reg = re.compile(r"i am ([\w]+).*?$")
>>> reg.findall(a)
['struggling']

.format()メソッドが位置引数をタプルとして受け取り、アイテム 0 を検索しようとし、の引数セットが渡されたため、表示される例外がスローされますIndexError

于 2013-09-03T09:40:33.380 に答える