2012-05-28 70 views
1

我試圖解析以下字符串:Python的Parseing字符串用單引號

編輯以佔空間...

['THE LOCATION', 'THE NAME', 'THE JOB', 'THE AREA')] 

現在我用正則表達式和分割數據與逗號到一個列表

InfoL = re.split( 「」 信息)

但是我的輸出是

'THE LOCATION' 
'THE NAME' 
'THE JOB' 
'THE AREA')] 

希望有如下輸出

THE LOCATION 
THE NAME 
THE JOB 
THE AREA 

的思考?

+1

與右括號什麼?這是輸入的合法部分,還是僅僅是一個錯字? – NPE

+0

是的,右括號應該在那裏。 –

+0

您是否正在運行該程序VIA IDLE?還是通過命令行運行它? –

回答

0

一種可能性是使用strip()刪除不想要的字符:

In [18]: s="['LOCATION', 'NAME', 'JOB', 'AREA')]" 

In [19]: print '\n'.join(tok.strip("[]()' ") for tok in s.split(',')) 
LOCATION 
NAME 
JOB 
AREA 

像你原來的解決方案,這將打破,如果任何條件都不允許包含逗號。

P.S.如果在你的例子右括號是筆誤,你也許能夠使用ast.literal_eval()

In [22]: print '\n'.join(ast.literal_eval(s)) 
LOCATION 
NAME 
JOB 
AREA 
+0

你會如何做到這一點,但保持在列表中? –

0
InfoL = re.split("[, '()\[\]]*", Info) 
+1

謝謝你的工作。你能解釋一下python在看到這個時做了什麼嗎? –

+0

值得注意的是,這個正則表達式可能有點太脆弱了。例如,如果其中一個字符串包含一個空格,則這將會中斷。 – NPE

+0

嗯,我明白你的意思了...我的清單現在分成很多...例如,'位置'變成'The','位置'在列表中時,它應該是'The Location' –

0

試試這個代碼片段:

import re 
tmpS = "['THE LOCATION', 'THE NAME', 'THE JOB', 'THE AREA')]" 
tmpS = re.sub('[^\w\s,]+', '', tmpS) 
print tmpS # Result -> 'THE LOCATION, THE NAME, THE JOB, THE AREA' 
for s in tmpS.split(','): 
    print s.strip() 


O/P: 
THE LOCATION 
THE NAME 
THE JOB 
THE AREA 
相關問題