我需要打印最后一个字符串" foo"在这里,它是一个没有转义字符的错误和转义字符的错误结果。
>>> str1='\\a\b\c\foo'
>>> print str1.rpartition('\')[1]
File "<stdin>", line 1
print str1.rpartition('\')[1]
^
SyntaxError: EOL while scanning string literal
>>> print str1.rpartition('\\')[1]
\
>>>
答案 0 :(得分:1)
两个错误:
首先,foo
中没有\\a\b\c\foo
。为什么?因为\f
是换页符。您可以使用另一个反斜杠\\\\a\\b\\c\\foo
来转义反斜杠,也可以使用原始字符串str1=r'\\a\b\c\foo'
。
其次,rpartition
返回字符串的左侧部分,分隔符本身以及字符串的右侧部分。因此str1.rpartition('\\')[1]
为您提供了分隔符。使用str1.rpartition('\\')[2]
获得所需的结果。
答案 1 :(得分:0)
假设你有:
s = r'\\a\b\c\foo'
你需要:
s.rsplit('\\', 1)[-1]
如果你的反斜杠搞砸了,请看其他答案(这里不需要重复这些注意事项)。
答案 2 :(得分:0)
您需要分区元组的第三个元素:
>>> str1=r'a\b\c\foo'
>>> str1.rpartition('\\')
('a\\b\\c', '\\', 'foo')
>>> str1.rpartition('\\')[2]
'foo'
答案 3 :(得分:0)
在您的打印行中,'\'字符正在转义第二个'
。它无法解析代码行,因为编译器看起来线条没有结束。
它看起来像编译器')[1]
引用标记是字符串的一部分。你需要添加第二个'\'来逃避第一个。试试这个:
print str1.rpartition('\\')[1]