2014-12-11 4 views
1

저는 파이썬을 사용하여 숫자를 16 진수 형식으로 변환하고 str.lstrip을 사용하여 각 숫자의 접두어 'Ox'을 제거했습니다. 같은 :16 진수 lstrip 방법?

>>> data='0' 
>>> data 
'0' 
>>> data=str(hex(int(data))) 
>>> data 
'0x0' 
>>> data=data.lstrip("0x") 
>>> data 
'' 

내가 여기있어 문제는 대신 '0'를 인쇄, 그것은이 lstrip 방법을 적용 후 ''를 인쇄한다는 것입니다. 내 질문에 어떻게 그것을 , '' 빈 문자열 대신 인쇄 할 수 있습니까? 그 데이터를 파일에 저장하기 때문에 str 타입이 필요합니다. 당신이 0x 접두사가 알고 있다면

+1

'lstrip ("0x")' ''0x ''을 제거하지 않고, 모든'0'과'x's *를'0'이나'x'가 아닌 가장 왼쪽의 문자까지 제거합니다. – jonrsharpe

답변

5

, 당신은 슬라이스 사용하여 제거 할 수 있습니다 또는

>>> "0xdeadbeef"[2:] 
'deadbeef' 

을, 당신은 hex() 대신 문자열 형식 연산자를 사용할 수 있습니다

>>> "%x" % 3735928559 
'deadbeef' 

또는 사용을 format() :

>>> format(3735928559, "x") 
'deadbeef' 
+0

당신은 또한 슬라이싱 솔루션을 일반화 할 수 있습니다 :'lcut = lambda s, prefix : s [len (접두어) :] s.startswith (prefix) else's - 그리고 이것이 표준 라이브러리에없는 이유가 궁금합니다. 아니면 내가 그것을 놓쳤는가? – ch3ka