繁体   English   中英

python中的Lstrip函数

[英]Lstrip function in python

我的以下代码有问题:

name = "epubtxt\ursita.txt"

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

我正在这样做:

name.lstrip('epubtxt\\')

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

rsita.txt

这是怎么了?

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

例子:

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

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

您可能需要的是:

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

u被剥夺的原因与\\u\u003c/code>或unicode不相关。 问题在于, strip功能采用要剥离的字符列表,而不考虑其顺序(在函数调用中的单词中)。 换句话说,在实施例中,功能将剥离匹配任何 “E”,“P”的,“U”,等等,直到其中一个字符不匹配的任何字符。

别人已经告诉您lstrip为什么不起作用。 合适的解决方案是拆分并采用最后一个组件:

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

可能更容易做到的是在\\上分割字符串。 这样,您就不会得到任何错误匹配(因为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'

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM