如何使用rpartition用反斜杠拆分字符串

时间:2016-07-22 17:58:02

标签: python

我需要打印最后一个字符串" 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]
\
>>>

4 个答案:

答案 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]