理解字符串方法条

时间:2014-02-19 09:08:31

标签: python

在使用下面显示的内容初始化变量x后,我使用参数应用了条带。剥离的结果是出乎意料的。当我试图剥离“ios_static_analyzer /”时,“rity / ios_static_analyzer /”正在变得条纹化。

请帮助我知道为什么会这样。

>>> print x
/Users/msecurity/Desktop/testspace/Hy5_Workspace/security/ios_static_analyzer/

>>> print x.strip()
/Users/msecurity/Desktop/testspace/Hy5_Workspace/security/ios_static_analyzer/

>>> print x.strip('/')
Users/msecurity/Desktop/testspace/Hy5_Workspace/security/ios_static_analyzer

>>> print x.strip('ios_static_analyzer/')
Users/msecurity/Desktop/testspace/Hy5_Workspace/secu

>>> print x.strip('analyzer/')
Users/msecurity/Desktop/testspace/Hy5_Workspace/security/ios_static_

>>> print x.strip('_analyzer/')
Users/msecurity/Desktop/testspace/Hy5_Workspace/security/ios_static

>>> print x.strip('static_analyzer/')
Users/msecurity/Desktop/testspace/Hy5_Workspace/security/io

>>> print x.strip('_static_analyzer/')
Users/msecurity/Desktop/testspace/Hy5_Workspace/security/io

>>> print x.strip('s_static_analyzer/')
Users/msecurity/Desktop/testspace/Hy5_Workspace/security/io

>>> print x.strip('os_static_analyzer/')
Users/msecurity/Desktop/testspace/Hy5_Workspace/secu 

5 个答案:

答案 0 :(得分:4)

引自str.strip docs

  

返回带有前导和尾随字符的字符串副本   除去。 chars参数是一个指定set的字符串   要删除的字符。如果省略或None,则为chars参数   默认删除空格。 chars参数不是前缀或   后缀;相反,它的所有值组合都被剥离了:

因此,它会从字符串的两边删除参数中的所有字符。

例如,

my_str = "abcd"
print my_str.strip("da")  # bc

注意:您可以这样想,它会在找到输入参数字符串中找不到的字符时停止从字符串中删除字符。

要实际删除特定字符串,您应该使用str.replace

x = "/Users/Desktop/testspace/Hy5_Workspace/security/ios_static_analyzer/"
print x.replace('analyzer/', '')
# /Users/msecurity/Desktop/testspace/Hy5_Workspace/security/ios_static_

但是替换会删除各地的比赛,

x = "abcd1abcd2abcd"
print x.replace('abcd', '')  # 12

但是如果你只想在字符串的开头和结尾删除单词,你可以使用RegEx,就像这样

import re
pattern = re.compile("^{0}|{0}$".format("abcd"))
x = "abcd1abcd2abcd"
print pattern.sub("", x)   # 1abcd2

答案 1 :(得分:2)

我认为您需要的是replace

>>> x.replace('ios_static_analyzer/','')
'/Users/msecurity/Desktop/testspace/Hy5_Workspace/security/'
  

string.replace(s,old,new [,maxreplace])

Return a copy of string s with all occurrences of substring old replaced by new.

所以你可以用任何东西替换你的字符串并获得所需的输出。

答案 2 :(得分:0)

Python x.strip(s)从字符x的开头或结尾删除s中出现的任何字符!所以s只是一组字符,而不是匹配子字符串的字符串。

答案 3 :(得分:0)

string.strip删除作为参数给出的一组字符。 chars参数不是前缀或后缀;相反,它的所有值组合都被剥离了。

答案 4 :(得分:0)

strip不会从对象中删除作为参数给出的字符串;它会删除参数中的字符。 在这种情况下,strip会将字符串s_static_analyzer/视为需要删除的可迭代字符。