下面的代码按照预期工作,如果我做re.search("(\d+)x"
。re.search()TypeError:不能连接'str'和'NoneType'对象
但是如果我添加其他搜索re.search("(\d+)x|x(\d+)"
我得到:
TypeError: cannot concatenate 'str' and 'NoneType' objects
代码:
fundleverage = None
regex_fundleverage = None
regex_fundleverage = re.search(r"(\d+)x|x(\d+)", instrument_name, flags=re.IGNORECASE)
if funddirection == "Long" and not regex_fundleverage == None:
fundleverage = "+" + regex_fundleverage.group(1) + "00"
if funddirection == "Short" and not regex_fundleverage == None:
fundleverage = "-" + regex_fundleverage.group(1) + "00"
print "Fundleverage: %s" % fundleverage
错误当然是因为我会再做连接海峡"+"
和"00"
与None
。
我的问题是为什么选择group(1)
只有在re.search()
中只有一个查找时才起作用,但如果有两个备用查找则不起作用。
它正在搜索的字符串不包含替代方案"(\d+)x"
和"x(\d+)"
,只有一个可能。
例STR:
"Boost LevDAX 3x Daily ETP"
"ComStage LevDAX x2 UCITS ETF"
如果您需要两个输出,那么不要在're.search'中使用上述正则表达式,因为一旦找到第一个匹配项,搜索就会停止。 –
@AvinashRaj字符串中只有一个选项存在。我的理解是正确的,它只会“看”第一种选择,而不是第二种选择,因此如果不存在,就使它成为“无”? – Winterflags
永不比较无 – TheGeorgeous