从remote-ls列表中提取分支名称的最pythonic方法是什么?

时间:2014-10-02 16:42:47

标签: python

我是一位经验丰富的编程员,是Python的新手。

我有一个使用git ls-remote命令获取的分支列表:

db6ad7246abf74cb845baa60e6fe45dacf897612    HEAD
1fc347b17201054d8b5b9593efc1925918f04940    refs/heads/develop
63b1a5b5901250651a162814b085c88c96835e3a    refs/heads/feature-dm
8d72969f3b1ef5b16792b1cca5c65262d78b8dc2    refs/heads/feature/breedtest
0ca9346d1f5b46f77f41a89aeb11998cbb83c007    refs/heads/feature/fedortest
147bea618187c11927bfe83f1d8b52591f3b734c    refs/heads/feature/frontend-autumn14
d5e5d4d75dddd46a5068ca621ce8e74e68bdca4e    refs/heads/feature/socket-testing
03e70c846a84688ccbf78ca1159f410e577e1ee5    refs/heads/feature/youtracktest
db6ad7246abf74cb845baa60e6fe45dacf897612    refs/heads/master
787580497c0b41ca040c60bd7906ab598f891a43    refs/heads/master-old
33a553135eb4341046702adaa762791b38456daf    refs/pull/67/head
10c4c172ba0479dac8eefba674395d09d9d4b061    refs/pull/67/merge

我想只从refs/heads/中提取分支名称:

develop
feature-dm
feature/breedtest
feature/fedortest
feature/frontend-autumn14
feature/socket-testing
feature/youtracktest
master
master-old

我可以拆分新线并使用正则表达式 - 但我确定可能有一种智能的pythonic方式来做到这一点......

1 个答案:

答案 0 :(得分:1)

分割新行后会有一个字符串列表。

l = ['db6ad7246abf74cb845baa60e6fe45dacf897612    HEAD',
     '1fc347b17201054d8b5b9593efc1925918f04940    refs/heads/develop',
     '63b1a5b5901250651a162814b085c88c96835e3a    refs/heads/feature-dm',
     '8d72969f3b1ef5b16792b1cca5c65262d78b8dc2    refs/heads/feature/breedtest',
     '0ca9346d1f5b46f77f41a89aeb11998cbb83c007    refs/heads/feature/fedortest',
     '147bea618187c11927bfe83f1d8b52591f3b734c    refs/heads/feature/frontend-autumn14',
     'd5e5d4d75dddd46a5068ca621ce8e74e68bdca4e    refs/heads/feature/socket-testing',
     '03e70c846a84688ccbf78ca1159f410e577e1ee5    refs/heads/feature/youtracktest',
     'db6ad7246abf74cb845baa60e6fe45dacf897612    refs/heads/master',
     '787580497c0b41ca040c60bd7906ab598f891a43    refs/heads/master-old',
     '33a553135eb4341046702adaa762791b38456daf    refs/pull/67/head',
     '10c4c172ba0479dac8eefba674395d09d9d4b061    refs/pull/67/merge']

您可以使用列表理解。

s = 'refs/heads/'
[i.split()[1][len(s):] for i in l if s in i]

输出

['develop',
 'feature-dm',
 'feature/breedtest',
 'feature/fedortest',
 'feature/frontend-autumn14',
 'feature/socket-testing',
 'feature/youtracktest',
 'master',
 'master-old']
相关问题