TypeError:无法连接' str'和' _sre.SRE_Match'对象

时间:2015-06-16 21:27:49

标签: python regex concatenation

我正在使用正则表达式检索字符串,并且我试图将其与其他字符串连接起来。

错误:

TypeError: cannot concatenate 'str' and '_sre.SRE_Match' objects

示例:

original_string = "ABC 4x DEF"
regex = re.search(r"(\d)X|x", original_string)
new_string = "+" + regex + "00"
print "New string: %s" % new_string
如果一切正常,

new_string应为"+400"

2 个答案:

答案 0 :(得分:4)

regex不是字符串。它是表示匹配的Match Object。你必须拉出匹配的文字:

fundleverage = "+" + regex.group(1) + "0"

请注意,您的表达式与大写X 的数字匹配小写x(无数字)。在您的情况下,这意味着它与x匹配,而第1组为空(None)..

要匹配数字xX,请使用:

regex = re.search(r"(\d)[Xx]", original_string)

或使用不区分大小写的匹配:

regex = re.search(r"(\d)x", original_string, flags=re.IGNORECASE)

演示:

>>> import re
>>> original_string = "ABC 4x DEF"
>>> regex = re.search(r"(\d)X|x", original_string)
>>> regex
<_sre.SRE_Match object at 0x10696ecd8>
>>> regex.group()
'x'
>>> regex.groups()
(None,)
>>> regex = re.search(r"(\d)x", original_string, flags=re.IGNORECASE)
>>> regex.group()
'4x'
>>> regex.groups()
('4',)
>>> regex.group(1)
'4'

答案 1 :(得分:1)

对于不区分大小写的匹配,请使用original_string = "ABC 4x DEF" regex = re.search(r"(\d)x(?i)", original_string) new_string = "+" + regex.group() + "00" print "New string: %s" % new_string

(($(window).width() > 940) ? '1336' : '940')

新字符串:+ 4x00