반응형
누구든지 안전하지 않은 문자열을 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
반응형
'파이썬' 카테고리의 다른 글
파이썬 파일이 비어 있는지 확인하는 방법은 무엇입니까? (0) | 2020.12.11 |
---|---|
파이썬 "subprocess.Popen"-성공 및 오류 확인 (0) | 2020.12.11 |
파이썬 과학적 표기법을 Float로 변환 (0) | 2020.12.11 |
파이썬 Python Quicksort 런타임 오류 : 최대 재귀 깊이 (cmp)가 초과되었습니다. (0) | 2020.12.11 |
파이썬 x, y = zip (* zip (a, b))이 파이썬에서 작동하는 이유는 무엇입니까? (0) | 2020.12.11 |
댓글