我是蟒蛇初学者。 我写了这段代码,但它无法成功运作。 有人能理解为什么吗?
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()
删除所有字符,这些字符出现在您提供的字符的集中。由于您在该集合中同时提供了0
和1
,并且该字符串仅包含 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