2016-07-22 92 views
0

我需要打印最后一个字符串“foo”,这是一个没有转义字符和转义字符错误结果的错误。如何使用rpartition将字符串拆分为反斜杠

>>> 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] 
\ 
>>> 

回答

1

两个错误:

首先,有一个在\\a\b\c\foo没有foo。为什么?因为\f是换页符。您可以使用另一个反斜杠\\\\a\\b\\c\\foo转义反斜杠或使用原始字符串str1=r'\\a\b\c\foo'

其次,rpartition返回字符串的左边部分,分隔符本身和字符串的右边部分。所以str1.rpartition('\\')[1]给你分隔符。使用str1.rpartition('\\')[2]来获得你想要的结果。

+0

谢谢,我刚开始做Python,从Perl切换:) – rodee

0

假设你有:

s = r'\\a\b\c\foo' 

您需要:

s.rsplit('\\', 1)[-1] 

如果你的反斜线搞砸了,看到其他的答案(无需赘述这些警​​告)。

0

您需要的分区元组的第三个元素:

>>> str1=r'a\b\c\foo' 
>>> str1.rpartition('\\') 
('a\\b\\c', '\\', 'foo') 
>>> str1.rpartition('\\')[2] 
'foo' 
0

在你打印行的“\”字符转义第二'。它不能解析代码行,因为它看起来像行没有结束。 它看起来像编译器')[1]它引用标记是字符串的一部分。你需要添加第二个'\'来逃避第一个。试试这个:

print str1.rpartition('\\')[1] 
相关问题