我在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'
答案 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
。