2015-01-01 2 views
1

저는 파이썬 초보자입니다. 이 코드를 작성했지만 정상적으로 작동하지 않습니다. 누군가 이해할 수 있습니까?파이썬에서 문자열로 된 이진

if __name__ == '__main__': 
    # if "pro" begin with "test", delete "test" from "pro". 
    pro = "001001111010010101001" 
    test = "0010" 

    if pro.startswith(test): 

     pro = pro.lstrip(test) 
     # My ideal -> pro == "01111010010101001" 

     print pro 
    print pro 

이 코드는 아무 것도 출력하지 않습니다.

+0

당신에게 모두 감사합니다! 알았다. –

답변

8

str.lstrip()에 나타나는 모든 문자 당신이 준 문자 설정 제거합니다

>>> pro = pro.lstrip('10') 
>>> pro 
'' 

대신 그냥 슬라이스를 사용할 수 있습니다. 이 세트에 01을 모두 입력 했으므로 문자열은 으로 구성되며 0과 1로 구성됩니다. 전체 문자열을 제거했습니다.

즉, str.lstrip()이 아니며은 프리픽스를 제거합니다. 그것은 문자가 인수에 이름이 제공 한 번에 하나 개의 문자를 제거합니다

>>> '0123'.lstrip('0') 
'123' 
>>> '0123'.lstrip('10') 
'23' 
>>> '0123'.lstrip('20') 
'123' 

대신 처음 len(test) 문자를 제거

pro = pro[len(test):] 
+0

정말 고마워요 !! 나는 그것을 나의 이상으로 할 수 있었다. –

2

lstrip(chars)은 모든 문자가 문자열의 시작 부분에서 제거 된 문자열의 복사본을 반환합니다. 0을 포함하는 test을 전달하면 pro (0,01 만 포함)의 모든 문자가 제거됩니다.

>>> if pro.startswith(test): 
... pro=pro[len(test):] 
... 
>>> pro 
'01111010010101001' 
1

이 lstrip가에서 왼쪽 모든 문자를 제거하기 때문에입니다

난 당신이 필요가 있다고 생각 : 그래서 주어진 모든 것이 제거

pro = pro.startswith(test) and pro[len(test):] or pro 

이있는 경우 pro의 시작 부분을 제거합니다.

+0

만약 당신이 그것을 하나의 라이너로 만들려고한다면, 적어도 pro.startswith (test) else pro'라면'pro [len (test) :] 조건문을 사용하십시오. –

1

마찬가지로 추가 ..이 또한 작동합니다

>>> pro = "001001111010010101001" 
>>> test = "0010" 
>>> if pro.startswith(test): 
     pro = pro.partition(test)[-1] 
     print pro 

01111010010101001 
+0

'pro = pro [len (test) :]'는'pro.partition()'을 사용하는 것보다 더 분명 할 수도 있습니다. – martineau

+0

예 .. 나는 또한 그렇게 생각한다. :) – aerokite

관련 문제