Python中的字符串二进制文件

时间:2015-01-01 14:02:52

标签: python

我是蟒蛇初学者。 我写了这段代码,但它无法成功运作。 有人能理解为什么吗?

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

此代码不会输出任何内容。

4 个答案:

答案 0 :(得分:8)

str.lstrip()删除所有字符,这些字符出现在您提供的字符的中。由于您在该集合中同时提供了01,并且该字符串仅包含 0和1,因此您删除了整个字符串。

换句话说,str.lstrip() 删除前缀。它会一次删除一个字符,前提是该字符在参数中命名:

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

删除第一个len(test)字符:

pro = pro[len(test):]

答案 1 :(得分:2)

lstrip(chars)返回字符串的副本,其中所有字符都已从字符串的开头删除。因此,如果您传递包含1,0的test,则会移除pro中的所有字符(pro仅包含0,1)。

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

相反,你可以使用切片:

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

答案 2 :(得分:1)

这是因为lstrip从给定的集合中删除了所有左边的字符,因此删除了所有内容:

我认为你需要:

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

这将从test的{​​{1}}开始删除pro

答案 3 :(得分:1)

同样多余..这也有效:

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

01111010010101001