아래 코드는 의도 한대로 작동합니다 re.search("(\d+)x"
.
그러나 대체 검색을 추가 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
오류로 인해 내가 CONCATENATE str을 시도 것과 물론이다 "+"
와 "00"
함께 None
.
내 질문은 group(1)
에서 조회가 하나만있을 때 선택이 작동 re.search()
하지만 두 개의 대체 조회가 있으면 작동하지 않는 이유 입니다.
검색중인 문자열에 대체 "(\d+)x"
및을 모두 포함하지 않으며 "x(\d+)"
하나만 가능합니다.
예 str :
"Boost LevDAX 3x Daily ETP"
"ComStage LevDAX x2 UCITS ETF"
나는 이렇게 할 것이다 :
regex_fundleverage = re.findall('(?<=x)\d+|\d+(?=x)',instrument_name, flags=re.IGNORECASE)
if funddirection == "Long" and regex_fundleverage:
fundleverage = "+" + regex_fundleverage[0] + "00"
if funddirection == "Short" and regex_fundleverage:
fundleverage = "-" + regex_fundleverage[0] + "00"
print "Fundleverage: %s" % fundleverage
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다