除非在前面,否则Python会将字符串与空格分开

iPr*_*ram 4 python split escaping python-2.7

很抱歉,如果这篇文章有点令人困惑,这是我在这个网站上的第一篇文章,这是一个很难问的问题,我已经尽力了.我也尝试过谷歌搜索,我找不到任何东西.

我试图像python中的应用程序一样创建自己的命令行,我想知道如果"\"不在空格前面并且删除反斜杠,如何拆分字符串.

这就是我的意思.

>>> c = "play song I\ Want\ To\ Break\ Free"
>>> print c.split(" ")
['play', 'song', 'I\\', 'Want\\', 'To\\', 'Break\\', 'Free']
Run Code Online (Sandbox Code Playgroud)

当我c用空格分割时,它会保留反斜杠,但它会移除空间.这就是我想要的样子:

>>> c = "play song I\ Want\ To\ Break\ Free"
>>> print c.split(" ")
['play', 'song', 'I ', 'Want ', 'To ', 'Break ', 'Free']
Run Code Online (Sandbox Code Playgroud)

如果有人可以帮助我那将是伟大的!

如果它需要正则表达式,你可以解释一下,因为我以前从未使用过它们.

编辑:现在这已经解决了我忘了问有没有办法如何检测反斜杠是否已被转义?

nne*_*neo 7

看起来你正在编写一个命令行解析器.如果是这样的话,我可以推荐shlex.split一下吗?它根据shell lexing规则正确地拆分命令字符串,并正确处理转义.例:

>>> import shlex
>>> shlex.split('play song I\ Want\ To\ Break\ Free')
['play', 'song', 'I Want To Break Free']
Run Code Online (Sandbox Code Playgroud)