2013-04-28 68 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']}