在下面的python代码中
import re
myText = "The color of the car is red. Which is a popular color."
regularExp = "The color of the car is\s*(?P<color>\w*)..*"
pattern = re.compile(regularExp)
match = re.search(pattern, myText)
color = match.groups("color")
print(color)
我希望输出为red
。但我得到的是('red',)
。我做错了什么?
答案 0 :(得分:3)
re.search返回match object,因为您可以看到groups
方法始终返回元组。因此,要么访问结果color[0]
的第一个元素,要么使用group
函数:
color = match.group("color")
另请注意match.groups("color")
可能不会按照您的想法执行操作,引用文档:
match.groups(缺省值=无)
默认参数用于未参与的组 比赛;它默认为无。
如果未找到颜色组匹配,则表示您将颜色设置为“颜色”。
答案 1 :(得分:1)
您正在打印元组,而不是str。试试这个:
print(color[0])
或(信用:WiktorStribiżew):
color = match.group("color")
print(color)
答案 2 :(得分:0)
m
的,m.groups
返回tuple
,一个不可变的序列。您可以将其编入索引或
color = m.group(1) # m.group(n) for nth group
OR
color = m.group('color') # for named group
您说('red',)
包含不需要的字符。这可能意味着你需要刷新基本的python,因为你无法识别tuple
。