Python不允许我用正则表达式做match.group()吗?

时间:2013-10-28 14:40:50

标签: python regex

我在Python中编写了一个正则表达式来获取字符串中的数字。但是,当我运行match.group()时,它表示对象list没有属性group。我究竟做错了什么?我输入的代码粘贴到终端,以及终端的响应。谢谢。

>>> #import regex library
... import re
>>> 
>>> #use a regex to just get the numbers -- not the rest of the string
... matcht = re.findall(r'\d', dwtunl)
>>> matchb = re.findall(r'\d', ambaas)
>>> #macht = re.search(r'\d\d', dwtunl)
... 
>>> #just a test to see about my regex
... print matcht.group()
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
AttributeError: 'list' object has no attribute 'group'
>>> print matchb.group()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'list' object has no attribute 'group'
>>> 
>>> #start defining the final variables
... if dwtunl == "No Delay":
...     dwtunnl = 10
... else:
...     dwtunnl = matcht.group()
... 
Traceback (most recent call last):
  File "<stdin>", line 5, in <module>
AttributeError: 'list' object has no attribute 'group'
>>> if ambaas == "No Delay":
...     ammbaas = 10
... else:
...     ammbaas = matchb.group()
... 
Traceback (most recent call last):
  File "<stdin>", line 4, in <module>
AttributeError: 'list' object has no attribute 'group'

3 个答案:

答案 0 :(得分:4)

re.findall()没有返回匹配对象(或它们的列表),它总是返回一个字符串列表(或者一个字符串元组列表,如果有多个字符串捕获组)。并且列表没有.group()方法。

>>> import re
>>> regex = re.compile(r"(\w)(\W)")
>>> regex.findall("A/1$5&")
[('A', '/'), ('1', '$'), ('5', '&')]

re.finditer()将返回一个迭代器,每个匹配产生一个匹配对象。

>>> for match in regex.finditer("A/1$5&"):
...     print match.group(1), match.group(2)
...
A /
1 $
5 &

答案 1 :(得分:0)

因为re.findall(r'\d', ambaas)返回list。您可以遍历列表,例如:

for i in stored_list

或只是stored_list[0]

答案 2 :(得分:0)

re.findall()返回字符串列表,而不是match对象。你的意思可能是re.finditer