본문 바로가기
파이썬

파이썬 Python: Convert a string to an integer

by º기록 2020. 12. 11.
반응형

누구든지 안전하지 않은 문자열을 int 로 변환하는 빠른 방법이 있습니까?

문자열은 일반적으로 '234 \ r \ n' 또는 이와 유사한 형식으로 반환됩니다.

이 경우에는 234 를 원합니다. '-1 \ r \ n'이면 -1 을 원합니다. 나는 방법이 실패하는 것을 결코 원하지 않지만 오류를 숨기기 위해 통과하는 것 외에는 시도까지 가고 싶지 않습니다 (극단적 인 일이 발생하는 경우).

 

해결 방법

 

이 경우 권장하지는 않지만 try / except 를 피할 수있는 방법이 있습니다 (입력 문자열의 이름이 s 라고 가정하면 , 그리고 당신은 무언가를 반환해야하는 함수에 있습니다) :

xs = s.strip()
if xs[0:1] in '+-': xs = xs[1:]
if xs.isdigit(): return int(s)
else: ...

else ... 부분은 s 'iamnotanumber'인 경우 원하는 것을 반환하는 곳입니다. , '23skidoo', 비어 있음, 모두 공백 등.

많은 입력 문자열이 숫자가 아닌 경우가 아니라면 try / except가 더 좋습니다.

try: return int(s)
except ValueError: ...

간결함이 향상되고 어리석은 문자열 조작 및 테스트를 피할 수 있습니다!-)

많은 답변이 int (s.strip ()) 을 수행하는 것을 보았지만, 그것은 과도하지 않습니다 : 스트리핑이 필요하지 않습니다!

>>> int('  23  ')
23

int 는 선행 및 후행 공백을 모두 무시할만큼 충분히 알고 있습니다!-)

 

참조 페이지 https://stackoverflow.com/questions/2508861

 

 

반응형

댓글