2012-10-08 34 views
0

需要幫助我有這樣的代碼:製造鍵值對在python

while i<len(line): 
     if re.findall(pattern, line[i]): 
      k,v = line[i].split('=') 
      print k 
      token = dict(k=v) 
      print token 
      break 

和我得到的結果是:

ptk 
{'k': 'ptk_first'} 

如何使這個代碼幾行更好,字典,看起來就像這樣:

{'ptk': 'ptk_first'} 
+0

什麼'line'這裏? –

+0

line is ptk = ptk_first – Vor

+2

你爲什麼在這裏使用''while''循環?你甚至沒有推進''我''。請給出一個完整的例子,我們可以運行查看輸出。 –

回答

1
In [112]: line="ptk=ptk_first" 

In [113]: dict([line.split("=")]) 
Out[113]: {'ptk': 'ptk_first'} 

爲您的代碼:

for line in lines: 
    if re.findall(pattern, line): 
     token = dict([line.split("=")]) 
     print token 
+0

這就是我正在尋找的!非常感謝你! – Vor

+0

@wim其實他們是必要的,否則我必須使用一個元組''dict((line.split(「=」),))''。 –

+0

@AshwiniChaudhary:題外話題:你是從哪裏複製/粘貼代碼?如何啓用我的終端上的'In [lineno]'功能(?) – inspectorG4dget

2
for line in lines: 
    if re.match(pattern, line): 
     k,v = line.split('=') 
     token = {k:v} 
     print token 
+0

非常感謝你 – Vor

2

事情是這樣的:

lines="""\ 
key1=data on the rest of line 1 
key2=data on the rest of line 2 
key3=data on line 3""" 

d={} 
for line in lines.splitlines(): 
    k,v=line.split('=') 
    d[k]=v 

print d 
1

與正則表達式,你可以試試這個:

>>> import re 
>>> lines=""" 
... ptk=ptk_first 
... ptk1=ptk_second 
... """ 
>>> dict(re.findall('(\w+)=(\w+)',lines,re.M)) 
{'ptk1': 'ptk_second', 'ptk': 'ptk_first'}