2012-07-31 151 views
0

我有Python字符串如下拆分字符串在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 Filesonce up on a time也越來越分裂。

+0

youll必須使用正則表達式來分割 – Paranaix 2012-07-31 09:05:58

+5

你的例子是無效的蟒蛇;引號內的引號和反斜槓轉義。 – 2012-07-31 09:06:02

+0

現在,您的代碼在shell上下文中無效; shell將以相同的方式解釋空格,並且不正確地解釋命令。 – 2012-07-31 09:08:34

回答

9

你想看看shlex module,shell的詞法分析器。它擅長將諸如你的命令行分解爲它的組成部分,包括正確處理引用。

>>> 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'] 
+0

謝謝martijn – tjdoubts 2012-07-31 13:39:11

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