2016-03-31 102 views
-2

從文件中提取行的最佳方式是什麼(前行是:-user <username> -id <userid> -sub <subname>)。但長度線可能會隨着-user,-id,-sub等額外屬性而變化。什麼是從Python中提取行的最佳方式

輸出應該是: -

{ 
"user" : username 
"id" : userid 
"sub" : subname 
} 
+0

最佳方式嗎?你可以用一些字符串拆分來做到這一點 –

+0

@SergioTulentsev是的我可以通過字符串拆分來完成。這些屬性可能會有所不同。你認爲字符串分割比正則表達式更快嗎? –

+0

我不知道,它需要測量。而且,在大多數情況下,代碼的可維護性比原始性能更重要。非平凡的正則表達式比字符串分割更難掌握。 –

回答

1

我不使用JSON這一點。我已經硬編碼了引號和冒號

import re 
arr = re.findall("-(.*?)<(.*?)>", "-user <username> -id <userid> -sub <subname>") 

for x in arr: 
    print "\"" + x[0].strip() + "\" : ", x[1].strip() 

Ideone Demo

0
>>>import re 
>>> print("{\n"+re.sub(r'-(\w+)\s*([^-]+)\s*', r'"\1": "\2",\n', "-user <username> -id <userid> -sub <subname>").strip('[\n,]')+"\n}") 
{ 
"user": "<username> ", 
"id": "<userid> ", 
"sub": "<subname>" 
} 
>>> 
什麼
相關問題