2014-09-11 2 views
0

00024를 '00024'로 변환하는 방법은 무엇입니까?값을 변경하지 않고 8 진수를 문자열로 변환하는 방법은 무엇입니까?

파이썬 셸에서 00024를 실행하면 결과로 20이 인쇄됩니다. 00024를 문자열로 변환하려고합니다. 결과는 '00024'입니다. 어떤 제안?

+0

아니요, '00024'는 * 인쇄하지 않습니다 * 24. 24 진수이기 때문에 20을 인쇄합니다. –

+0

아, 미안하지만, 나는 잘못 입력했다. – kangfend

답변

3

당신은 앞에 0이 정수, format() 명시 적으로 문자열로 숫자 표현하려면 :

format(integer, '05d') 

을 할 때마다 출력 값, print 암시 적으로 당신이 얻을 format()으로, str()와 문자열로 변환 해당 변환이 명시 적으로 이루어지는 방식을 제어합니다.

대화 형 인터프리터에서 숫자를 반향 출력하면 repr()이 대신 사용되지만 정수의 경우 출력은 str()을 사용할 때와 완전히 동일합니다.

데모 : 당신은 문자 그대로의 정수로 00024를 입력하면

>>> format(24, '05d') 
'00024' 

, 파이썬 2는 구문 분석 구문 오류입니다 파이썬 3에서 8 진수, 등.

당신이 문자열 있다면, 당신은하지 앞에 0의 임의의 숫자와 함께, 당신이 원하는 일을 할 수 없기 때문에 파이썬 2 쉘 이러한 숫자를 해석하려면

. 기껏해야 결과 정수를 8 진수로 다시 포맷 할 수 있으며 다시 0으로 시작합니다. 즉 다시 문자열을 생성 할 수 있습니다,하지만 당신은 앞에 오는 0의 수를 하드 코딩해야한다 :이 또한 즉시 가 0을 선도하지 않는 것을 숫자를 가지고 실패 할 것이라는 점

>>> number = 00024 
>>> format(number, '05o') 
'00024' 

주 ; 제로를 선도

strnumber = format(number, '5d' if number > 0o07777 else '05o') 

어떤 번호와 숫자 8 또는 9 단순히 구문 오류와 함께 실패합니다 : 그들은 4095 (07777 진수)보다 큰 경우는 값을 자동으로 감지 할 수

>>> 09876 
    File "<stdin>", line 1 
    09876 
     ^
SyntaxError: invalid token 

더 좋은 방법은 같은 숫자를 문자열로 입력하는 것입니다.

+0

이 숫자 00024의 데이터가 있고 문자열로 변환하고 싶습니다. 그러나 값을 변경하지 마십시오. – kangfend

+0

아, 답장을 보내 주셔서 감사합니다. @ martijn-pieters :) – kangfend

관련 문제