2012-07-16 54 views
0

我试图剪断前半句中导入的字符串(S)总是采取的形式查找反斜杠多个单词的Python:</p> <p><code>"first phrase\... ... "</code></p> <p>前半句可以是任何长度,包括:进口串

我最初尝试的代码是:

phrase = s[1:s.find('\',1,len(s))] 

这显然没有奏效。

r'\'将不会编译(返回EOL错误)。

以下几点的变化:r'\\\'; r'\\\\\\\', "\\\", "\\\\\\\""
解析为:phrase = s[1:-1]

作为第一个字符始终是一个反斜杠我也试过:

phrase = s[1:find(s[0:1],1,len(s))], but it wasn't having any of it. 

任何建议表示赞赏,这应该是一个10分钟的工作!

+0

作为一个附注:'s.find(x,1,len(s))'是不必要的;你可以做's.find(x,1)'。但是,正如Prashant所说,拆分通常更简单,更清晰。没有人与你的问题有任何关系。 – abarnert 2012-07-17 00:59:42

+0

另外,如果你用s =“\ first phrase \ ... \ ...”来测试这个,那么s的第一个字符是一个换页符,而不是一个反斜杠,这可能解释你为什么要这么多问题。 – abarnert 2012-07-17 01:00:44

回答

6

字符串文字中的反斜杠需要转义。

'\\' 
+0

+1。如果您将OP的代码更改为一个字符以避免反斜杠,则“phrase”最终会按照“第一个语句”完全按照要求提供。 (但是,我怀疑他可能在测试它时遇到问题,因为他正在做's =“\第一个短语\ ... \ ...”,当然这实际上并不以反斜杠开始。) – abarnert 2012-07-17 00:57:43

4

我只是用拆分命令,这将会很容易地处理你的多字要求:

>>> s='\\first phrase\\second phrase\\third phrase\\' 
>>> print s 
\first phrase\second phrase\third phrase\ 

>>> s.split('\\') 
['', 'first phrase', 'second phrase', 'third phrase', ''] 

>>> s.split('\\')[1] 
'first phrase' 

关键是要确保反斜杠由反斜线。
这就是为什么它是你正在寻找或拆分的\\

+0

不是直接的回答OP的问题,但这是他尝试做什么的更加Pythonic的方式。 – abarnert 2012-07-17 00:58:04

+0

谢谢你!那就是诀窍。 – user1530213 2012-07-19 14:56:55

+0

请务必接受解决您的问题的答案:) – 2012-07-19 15:02:03

1

作为字符串的最后一个字符,即使它是一个原始字符串,也不能有'\' - 它需要写入'\\' - 事实上,如果你看看你的问题,你会看到突出显示有点过分 - 尝试按建议更改它,并且它可能很好地纠正它自己...

相关问题