Skip to main content
 首页 » 编程设计

python之包含 '#' 时文本操作的惊人输出

2025年05月04日12kenshinobiy

我在 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'