2024-10-17 06:15:16 发布
网友
我对以下代码有问题:
name = "epubtxt\ursita.txt"
我想删除这个目录,得到输出ursita.txt
ursita.txt
我是这样做的:
name.lstrip('epubtxt\\')
主要问题是我得到了以下输出:
rsita.txt
这里出了什么问题?你知道吗
s1.lstrip(s2)不会从s1左侧剥离整个s2。它所做的是从s1左侧剥离s2中包含的所有字符。你知道吗
s1.lstrip(s2)
s1
s2
示例:
'aaabbbccc'.lstrip('a') == 'bbbccc' 'aaabbbccc'.lstrip('ac') == 'bbbccc' 'aaabbbccc'.lstrip('ab') == 'ccc'
在您的示例中,'epubtxt\\'包含字符u,因此反斜杠后面的u被剥离。你知道吗
'epubtxt\\'
u
您可能需要:
if name.startswith('epubtxt\\'): name[len('epubtxt\\'):]
更简单的方法是在\上拆分字符串。这样您就不会得到任何错误的匹配(因为在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'
我在第二行使用了双斜杠-这是因为\是转义字符,但我们不希望它转义任何内容。因此我们逃避了逃避。你知道吗
剥离u的原因与\u或unicode无关。问题是strip函数获取要剥离的字符列表,而不管它们的顺序如何(在函数调用中的单词on中)。换言之,在您的示例中,该函数将剥离与“e”、“p”、“u”等的任何匹配的任何字符,直到其中一个字符不匹配为止。你知道吗
\u
strip
s1.lstrip(s2)
不会从s1
左侧剥离整个s2
。它所做的是从s1
左侧剥离s2
中包含的所有字符。你知道吗示例:
在您的示例中,
'epubtxt\\'
包含字符u
,因此反斜杠后面的u
被剥离。你知道吗您可能需要:
更简单的方法是在
\
上拆分字符串。这样您就不会得到任何错误的匹配(因为在Windows上文件名不能包含\号)。你知道吗这可以通过以下代码完成:
我在第二行使用了双斜杠-这是因为
\
是转义字符,但我们不希望它转义任何内容。因此我们逃避了逃避。你知道吗剥离
u
的原因与\u
或unicode无关。问题是strip
函数获取要剥离的字符列表,而不管它们的顺序如何(在函数调用中的单词on中)。换言之,在您的示例中,该函数将剥离与“e”、“p”、“u”等的任何匹配的任何字符,直到其中一个字符不匹配为止。你知道吗相关问题 更多 >
编程相关推荐