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

您的第二个正则表达式不匹配:

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 回答