문자열에서 일부 수학을 얻으려고합니다. 십진법이 없어도 완벽하게 작동하지만, 그 중 일부를 추가하기 시작하면 작동을 멈추게되어 점을 남기지 않는 것 같습니다. 내 정규 표현식은 옳다고 생각하지만 누군가 나를 교정 할 수 있습니까? 내가 "1.0*1.0"
에 넣어 경우정규식과 수학 사용
result = re.findall('\d+\.?\d*\*\d+\.?\d*', e)
for x in result:
lst = x.split("*")
print lst
e = e.replace(x, str(float(lst[0])*float(lst[1])))
그래서 1.0 나올해야하지만이 때문에 정규 표현식이다, 100.0로 나온다.
print lst는 [ "10", "10"]이 아니며 [ "1.0", "1.0"]이 아니므로 그 이후의 행은 아닙니다. 어떤 아이디어?
나의 이해는 +
다른 모듈 I에서, 하나 이상의 ?
는 0 또는 1 *
은 입력 문자열은 10 * 10로오고 그래서 분명 뭔가 잘못했다
그것은 나를 위해 일합니다 ... (모두 말했듯이'e'는''1.0 ''과 같습니다.) – mgilson
나를 위해 일합니다. . . 나는 추측하고있다 [GIGO] (http://en.wikipedia.org/wiki/Garbage_in,_garbage_out); ''1.0 * 1.0 ''에 넣으면, 전에 e가 설정되어있는 것인가? – ernie
여기는 당신의 문제는 아니지만 정규 표현식 ('r '\ d + \.? ..... .....')에 원시 문자열을 사용하는 습관을 버리는 것이 훨씬 낫다. '\ b' 또는 무엇인가를 추가하려고하면 혼란 스럽습니다. – Dougal