python中的Lstrip函数

时间:2019-05-20 19:13:02

标签: python string

我在使用以下代码时遇到问题:

name = "epubtxt\ursita.txt"

我想删除目录,以获取输出ursita.txt

我正在这样做:

name.lstrip('epubtxt\\')

主要问题是我得到了以下输出:

  

rsita.txt

这是怎么回事?

4 个答案:

答案 0 :(得分:3)

s1.lstrip(s2)不会从s2的左侧剥离整个s1。它的作用是从s2的左侧删除 s1 中包含的所有字符。

示例:

'aaabbbccc'.lstrip('a') == 'bbbccc'
'aaabbbccc'.lstrip('ac') == 'bbbccc'
'aaabbbccc'.lstrip('ab') == 'ccc'

在您的示例中,'epubtxt\\'包含字符u,因此反斜杠后的u被去除。

您可能需要的是:

if name.startswith('epubtxt\\'):
    name[len('epubtxt\\'):]

答案 1 :(得分:1)

u被剥离的原因与\u或unicode无关。问题在于strip函数采用要删除的字符列表,而不考虑它们的顺序(在函数调用中的单词中)。换句话说,在您的示例中,该函数将剥离与'e','p','u'等的 any 匹配的所有字符,直到其中一个字符不匹配。< / p>

答案 2 :(得分:1)

其他人已经告诉您lstrip不起作用的原因。合适的解决方案是拆分并采用最后一个组件:

 name.split('\\')[-1]
 # "ursita.txt"

答案 3 :(得分:0)

可能更容易做到的是在\上分割字符串。这样一来,您就不会出现任何错误匹配(因为Windows中的文件名不能包含\)。

这可以通过以下代码完成:

name = "epubtxt\ursita.txt"
name = name.split("\\")
name = name[-1] # use the last element of the list, which will be the absolute file.
>>> name
'ursita.txt'

我在第二行中使用了双斜杠-这是因为\是转义字符,但是我们不希望它转义任何内容。因此,我们逃脱了。