TypeError: cannot concatenate 'str' and '_sre.SRE_Match' objects
TypeError: cannot concatenate 'str' and '_sre.SRE_Match' objects
我正在使用正则表达式检索字符串,并尝试将其与其他字符串片段连接起来。
错误:
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"
。
regex
不是字符串。它是代表匹配的 Match Object。您必须提取匹配的文本:
fundleverage = "+" + regex.group(1) + "0"
请注意,您的表达式匹配大写 X
的数字 或 匹配小写 x
(无数字)。在您的情况下,这意味着它匹配 x
,并且组 1 为空 (None
)..
要匹配数字和 x
或 X
,请使用:
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'
对于不区分大小写的匹配,使用 (?i)
。
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
新字符串:+4x00
我正在使用正则表达式检索字符串,并尝试将其与其他字符串片段连接起来。
错误:
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"
。
regex
不是字符串。它是代表匹配的 Match Object。您必须提取匹配的文本:
fundleverage = "+" + regex.group(1) + "0"
请注意,您的表达式匹配大写 X
的数字 或 匹配小写 x
(无数字)。在您的情况下,这意味着它匹配 x
,并且组 1 为空 (None
)..
要匹配数字和 x
或 X
,请使用:
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'
对于不区分大小写的匹配,使用 (?i)
。
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
新字符串:+4x00