抓取最新的字符串并打印其值

时间:2013-06-18 00:36:05

标签: python

我有以下代码可以找到所有标签"依赖"并加入它们并打印它们。现在我只想抓取最后一个依赖和打印是值。预期输出和电流输出如下所示。

Current output:-

['348523', '350167', '350169', '348522', '350166', '350168', '350169', '350170', '350428', '350435', '350439', '350446', '350449', '350450', '350459', '350462', '350463', '350466', '350472', '350475', '350810', '350811', '350812', '350870', '350871', '350875', '350876', '350882', '350883', '350884', '350885', '348521']

Expected output:-
['348521','238567']

代码: -

import re
def findexternaldep ():
    #print "Processing dependency for change %s", change
    #change=str(change)
    comments = ''' comments:
    timestamp: 2013-06-12 09:18:36 PDT
    reviewer:
      name: user L
      email: username@com.company.com
      username: username
    message: Patch Set 2:

             Depends-on: 348523 350167 350169
    timestamp: 2013-06-12 09:18:36 PDT
    reviewer:
      name: user L
      email: username@com.company.com
      username: username
    message: Patch Set 2:

             Depends-on: 348522 350166 350168 350169 350170 350428 350435 350439 350446 350449 350450 350459 350462 350463 350466 350472 350475 350810 350811 350812 350870 350871 350875 350876 350882 350883 350884 350885
  comments:
    timestamp: 2013-06-12 10:39:46 PDT
    reviewer:
      name: user L
      email: username@com.company.com
      username: username
    message: Patch Set 2:
             Depends-on: 348521 238567
    '''

    print "COMMENTS"
    print comments
    deps = ' '.join(re.findall(r'(?<=Depends-on:\s)[\d ]+(?=\n)', comments)).split()
    print "DEPS"
    print deps
    #print depgerrit
    return deps

def main ():
    findexternaldep()

if __name__ == '__main__':
    main()

4 个答案:

答案 0 :(得分:1)

只需在评论中向后搜索,然后直到行尾:

print comments.rsplit('Depends-on: ', 1)[1].split('\n', 1)[0]

或者将正则表达式修改为:

deps = re.findall(r'(?<=Depends-on:\s)[\d ]+(?=\n)', comments)

然后得到最后一个元素:

print deps[-1]

如果你想让他们全都加入:

all_deps = ' '.join(deps) # similar to before

答案 1 :(得分:1)

如果使用贪婪点匹配跳到最后一个取决于:

m=re.match(r'.*Depends-on:\s*([^\n]*)', comments, re.DOTALL)
if m: print m.group(1)

输出

348521

答案 2 :(得分:0)

如果是最新的,你的意思是列表的最后一个元素,那么你可以通过以下方式获得:

deps[-1]

例如:

a = [2,4,6]
e = a[-1]
print(e)    #  Prints "6"

这看起来就像您期望的输出一样。

但是,如果您正在寻找列表元素中最大或最小的(当解释为整数时),您可以使用以下内容:

max(map(int, deps))

例如:

a = ['2','4','1','3']
e = max(map(int, a))
print(e)    #  Prints "4"

答案 3 :(得分:0)

你的意思是你想让它返回列表中的最后一个吗?没有错误检查,不会只是:

deps[-1]

否则,问题是每个人都在正则表达式中找到,因此它们都被包含在列表中。