Python中带字符串的二进制文件

2024-04-25 10:02:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我是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

这段代码没有输出任何东西。你知道吗


Tags: 代码namefromtestifmainmywith
3条回答

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):]

这是因为lstrip会从给定的集合中删除所有左侧字符,因此会删除所有字符:

我认为你需要:

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

这将从pro的开头删除test(如果有的话)。你知道吗

lstrip(chars)返回字符串的一个副本,其中所有字符都已从字符串开头剥离。因此,如果传递包含1,0的test,它将从propro中删除所有字符,这些字符只包含0,1)。你知道吗

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

相反,您可以使用切片:

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

相关问题 更多 >