Ehs*_*adi 1 python string text python-2.7
我在python 2.7中有一个字符串
s1='path#poss|<-poss<-home->prep->in->pobj->|pobj'
Run Code Online (Sandbox Code Playgroud)
我想 从它的开头删除'path#'.当我使用lstrip时,它会以奇怪的输出结束,并带有额外的'p'剥离.的输出
s2 = s1.lstrip('path#')
Run Code Online (Sandbox Code Playgroud)
是
'oss|<-poss<-home->prep->in->pobj->|pobj'
Run Code Online (Sandbox Code Playgroud)
代替
'poss|<-poss<-home->prep->in->pobj->|pobj'
Run Code Online (Sandbox Code Playgroud)
它适用于其他示例,例如:
'path#nsubj|<-nsubj<-leader->prep->of->pobj->|pobj'
Run Code Online (Sandbox Code Playgroud)
正确剥离到:
'nsubj|<-nsubj<-leader->prep->of->pobj->|pobj'
Run Code Online (Sandbox Code Playgroud)
为什么python从字符串中剥离出额外的字母?
这应该这样做:
prefix_to_strip = 'path#'
s1 = 'path#poss|<-poss<-home->prep->in->pobj->|pobj'
s1 = s1[len(prefix_to_strip):]
Run Code Online (Sandbox Code Playgroud)
strip()不起作用,因为它只是删除了传递给它的字符串中的任何字符(或者,严格来说,可迭代).
PS如果您希望能够安全地将此应用于任何字符串(即可能无法启动的字符串path#),请执行以下操作:
if s1.startswith(prefix_to_strip):
s1 = s1[len(prefix_to_strip):]
Run Code Online (Sandbox Code Playgroud)
甚至:
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'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
72 次 |
| 最近记录: |