我在 python 2.7 中有一个字符串
s1='path#poss|<-poss<-home->prep->in->pobj->|pobj'
我想从开头去掉 'path#'。 当我使用 lstrip 时,它以奇怪的输出结束,并删除了额外的 'p'。的输出
s2 = s1.lstrip('path#')
是
'oss|<-poss<-home->prep->in->pobj->|pobj'
代替
'poss|<-poss<-home->prep->in->pobj->|pobj'
它非常适合其他示例,例如:
'path#nsubj|<-nsubj<-leader->prep->of->pobj->|pobj'
正确剥离为:
'nsubj|<-nsubj<-leader->prep->of->pobj->|pobj'
为什么 python 从字符串中去除多余的字母?
请您参考如下方法:
应该这样做:
prefix_to_strip = 'path#'
s1 = 'path#poss|<-poss<-home->prep->in->pobj->|pobj'
s1 = s1[len(prefix_to_strip):]
strip() 不起作用,因为它只是删除在您传递给它的字符串(或者,严格来说,可迭代的字符串)中找到的任何字符。
P.S. 如果您希望能够安全地将此应用于任何字符串(即可能不以 path# 开头的字符串),请执行以下操作:
if s1.startswith(prefix_to_strip):
s1 = s1[len(prefix_to_strip):]
甚至:
def strip_prefix(prefix, string):
return string[len(prefix):] if string.startswith(prefix) else string
strip_prefix('foo#', 'foo#bar') # => 'bar'
strip_prefix('foo#', 'hello') # => 'hello'
