我有以下代码可以找到所有标签"依赖"并加入它们并打印它们。现在我只想抓取最后一个依赖和打印是值。预期输出和电流输出如下所示。
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()
答案 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]
否则,问题是每个人都在正则表达式中找到,因此它们都被包含在列表中。