예를 int로 가입 :생산 번호 변환이
import re
rx = re.compile("{0-9}")
Var1 =bla bla bla 54467
Var2= rx.findall(Var1)
number = ''.join(Var2)
내 질문은 내가 INT()와 함께 그렇게하려고하지만 난 오류가 발생, 숫자 변수가 int로 변환하는 방법입니다. 다른 방법으로 int와 같은 변수를 만드는 방법이 있습니까?
예를 int로 가입 :생산 번호 변환이
import re
rx = re.compile("{0-9}")
Var1 =bla bla bla 54467
Var2= rx.findall(Var1)
number = ''.join(Var2)
내 질문은 내가 INT()와 함께 그렇게하려고하지만 난 오류가 발생, 숫자 변수가 int로 변환하는 방법입니다. 다른 방법으로 int와 같은 변수를 만드는 방법이 있습니까?
정규식을 사용하지 마십시오. filter()
는 UCH 쉽고 빠르게입니다 :
>>> s = "bla bla bla 54467 bla"
>>> int(filter(str.isdigit, s))
54467
위의 코드는 하나의 문자열로 문자열의 모든 번호를 병합합니다. 당신이 원하지 않는 경우, 파이썬 3.x에 적응
>>> s = "bla 1223 bla 54467 bla"
>>> map(int, filter(str.isdigit, s.split()))
[1223, 54467]
같은 조리법을 사용하는 것은 다음과 같습니다
>>> s = "bla bla bla 54467 bla"
>>> int("".join(filter(str.isdigit, s)))
54467
>>> s = "bla 1223 bla 54467 bla"
>>> list(map(int, filter(str.isdigit, s.split())))
[1223, 54467]
정규식이 잘못되었습니다. 다음 작품 : 위의 코드는 관계없이 연속있어 여부, 문자열 내에서 모든 숫자를 발견하고 하나의 숫자로 병합됩니다
import re
rx = re.compile("[0-9]") # note the change
Var1 ='bla bla bla 54467 bla'
Var2= rx.findall(Var1)
number = int(''.join(Var2))
print number
참고. 연속 숫자 그룹을 얻으려면 정규식을 "[0-9]+"
으로 변경하십시오.
지도 기능은 나에게 당신이 여기가 싫어 다른 출력을 제공합니다. 그것은 저에게 저 산출을 준다 : <0x1beb250에지도 목표>. 네가 여기서 얻은 결과를 얻고 싶니, 어떻게? –
및 int() 여기에 쓰기로 어느 쪽이든 작동하지 않는다, 그것은 나에게 필터를 변환하고 싶지 않다는 오류를 준다. –
@HananN : 내 해결책은 Python 2.x입니다. Python 3.x를 사용하고 있다고 말하지 않았으며 95 %의 사용자가 여전히 2.x를 사용하고 있습니다. –