0

我有如下的python字符串

mystring = "copy "d:\Progrm Files" "c:\Progrm Files\once up on a time""

如何将此字符串拆分为

mylist = [copy,d:\Progrm Files,c:\Progrm Files\once up on a time]

当我尝试使用mysring.split(" ")空格Progrm Files并且once up on a time也被拆分时。

4

2 回答 2

9

你想看看shlex模块,shell lexer。它专门用于将命令行(例如您的命令行)拆分为其组成部分,包括正确处理引用。

>>> import shlex
>>> command = r'copy "d:\Program Files" "c:\Program Files\once up on a time"'
>>> shlex.split(command)
['copy', 'd:\\Program Files', 'c:\\Program Files\\once up on a time']
于 2012-07-31T09:07:29.237 回答
1

这个正则表达式捕捉你想要的:

import re

mystring = "copy \"d:\Progrm Files\" \"c:\Progrm Files\once up on a time\""

m = re.search(r'([\w]*) ["]?([[\w]:\\[\w\\ ]+)*["]? ["]?([[\w]:\\[\w\\ ]+)*["]?', mystring)

print m.group(1)
print m.group(2)
print m.group(3)

>>> 
copy
d:\Progrm Files
c:\Progrm Files\once up on a time
于 2012-07-31T09:33:54.057 回答