2015-11-19 128 views
1

的文件包含了這樣的臺詞:的Python拆分字符串忽略」

'MEASUREMENT machine.b_runs "Bit \"machine runs\" Bit"' 

我想是把它分割成一個列表,它是這樣的:

list = ['\'MEASUREMENT', 'machine.b_runs', 'Bit \"machine runs\" Bit'] 

使該行的分裂通過除雙引號之間的話' '忽略\"

如何做到這一點在Python?

+0

您可以用正則表達式分割字符串,刪除分隔符:http://stackoverflow.com/questions/4697006/python-split-string-by-list-of-separators –

+0

有沒有可能像你的字符串「\」\「比特\」機器運行\「位」'? –

+1

您的示例字符串應該以單引號結尾,我們以雙引號開頭 – ferdy

回答

1
x=r'MEASUREMENT machine.b_runs "Bit \"machine runs\" Bit"' 
print re.split(r'\s(?=(?:(?:[^"]|\\")*(?<!\\)"(?:[^"]|\\")*(?<!\\)")*(?:[^"]|\\")*$)',x) 

你可以嘗試這樣的事情。

輸出:['MEASUREMENT', 'machine.b_runs', '"Bit \\"machine runs\\" Bit"']

+1

謝謝,這解決了我的問題 – Itaipu

+0

你能解釋一下,'r'\ s(?:[?「] )*(?<!\\)「)*(?:[^」] | \\「)* $)''確實? – Itaipu

+0

@Itaipu它的前瞻性陳述找到一個空間, 。 「不應該有\」之前 – vks