2013-10-24 49 views
4

我是新的python编程,试图剥离包含正斜杠字符的字符串,我期望输出为'/堆栈',但给出如下结果。你能帮我实现预期产量吗?还有其他简单的方法可以实现吗?如何去掉包含正斜杠的字符串?

>>> name='/stack/overflow' 
>>> sub ='/overflow' 
>>> name.strip(sub) 
'stack' 

在此先感谢 HEMA

回答

6

.strip方法不会做你认为它的作用:

Docstring: 
S.strip([chars]) -> string or unicode 

Return a copy of the string S with leading and trailing 
whitespace removed. 
If chars is given and not None, remove characters in chars instead. 
If chars is unicode, S will be converted to unicode before stripping 

所以,你在做什么时说:“除去/ O, v,e,r,f,l,o和w从该字符串的开头或结尾开始。“

相反,尝试对/分裂,采取所有,但最后一个元素,并重新加入:

In [12]: '/'.join("/stack/overflow".split('/')[:-1]) 
Out[12]: '/stack' 

如果你真的只是想删除子“/溢出”,你可以这样做:

In [15]: "/stack/overflow".replace('/overflow', '') 
Out[15]: '/stack' 
+0

如果他真的想一切 - 除了最后一个,我可以使用'os.path.split'代替。 – DSM

+1

@DSM假设他或她实际上要求的是操作系统目录路径,而不是,例如HTTP路径或仅由正斜杠分隔的字符串。另外,在Windows上会失败:“os.path模块始终是适用于Python运行的操作系统的路径模块,因此可用于本地路径。” :) –

+0

@Christian很好的解释谢谢:) – user1559873

0

首先,你需要检查你所使用的OS

如果它的Linux/Unix的

正常的文件路径是通过/

,所以你可以简单地使用表示,

>>>name = '/stack/overflow' 

>>>name.split(os.sep) # Here os.sep is nothing but "/" 

['', 'stack', 'overflow'] 

,如果它的Windows,

只使用

>>> name.split("/") 
['', 'stack', 'overflow'] 
相关问题