2013-04-28 67 views
0

我想解析變量「output」中的字符串「External-dep」,並用它的值創建一個字典列表,這個變量出現在變量「output」中的多個位置, ..需要得到最新的.. ..「External-dep」值總是整數..我目前堅持在下面我不能解析字符串「External-dep」,任何人都可以提供輸入?解析變量中的文本

Master_change ="12345" 
external_dep ={} 
output="""change Ied13af85dec9128b6a715739b50ae2f33a92cf14 
    project: platform/data 
    branch: master 
    id: Ied13af85dec9128b6a715739b50ae2f33a92cf14 
    number: 12345 
    subject: code: test 
    owner: 
    name: danile david 
    email: [email protected] 
    username: gdavid 
    url: https://review-android.company.com/12345 
    createdOn: 2013-02-19 18:10:36 PST 
    lastUpdated: 2013-04-24 13:43:23 PDT 
    sortKey: 0024a01b0003dc6c 
    open: true 
    status: NEW 
    comments: 
    timestamp: 2013-04-22 15:20:17 PDT 
    reviewer: 
     name: danile david 
     email: [email protected] 
     username: gdavid 
    message: Patch Set 4: 

      External-dep: 311957 
    comments: 
    timestamp: 2013-04-24 13:43:23 PDT 
    reviewer: 
     name: danile david 
     email: [email protected] 
     username: gdavid 
    message: Patch Set 4: 

      External-dep: 312994 311957 312591 

type: stats 
rowCount: 1 
runTimeMilliseconds: 4""" 

    for line in output : 
     if 'External-dep' in line:#make External-dep case-insensitive 
      print line 

    ''' 

預期輸出: -

external_dep = { 
     '12345': ['312994','311957','312591'] 
     } 

''' 
+0

使用'():

for line in output.splitlines() : if 'external-dep' in line.lower(): print line external_dep[Master_change] = list(line.replace("External-dep: ", "").strip().split(' ')) print external_dep 

輸出: ' – 2013-04-28 20:33:20

回答

2

下(如果它假設順序並不重要,但正確的我)會給你你正在尋找的輸出。我使用上面提到的相同的輸出字符串,但不要在此列出以保留空間。

>>> import re 
>>> external_dep = dict() 
>>> deps = ' '.join(re.findall(r'(?<=External-dep:\s)[\d ]+(?=\n)', output)).split() 
>>> deps 
['311957', '312994', '311957', '312591'] 
>>> external_dep[Master_change] = list(set(deps)) 
>>> external_dep 
{'12345': ['311957', '312994', '312591']} 
0

如果你趕時間,利用這一點,但以其它方式使用更好的東西:在output.splitlines線路

{'12345': ['312994', '311957', '312591']}