2013-10-17 63 views
0

刪除它,我有一個像Python列表:搜索在Python列表中的字符串,然後從列表中

['A /cloudos-ui/branches/bare_metal', 
'M /cloudos-ui/branches/bare_metal/packaging/DEBIAN/control', 
'M /cloudos-ui/branches/bare_metal/create_cosmos_installer.sh', 
'M /cloudos-ui/branches/bare_metal/packaging/DEBIAN/control', 
'M /cloudos-ui/branches/bare_metal/scripts/create_skyline_installer.sh', 
'M /cloudos-ui/branches/bare_metal/forms.py', 
'M /cloudos-ui/branches/bare_metal/tables.py', 
'M /cloudos-ui/branches/bare_metal/templates/flavors/_create.html', 
'M /cloudos-ui/branches/bare_metal/templates/flavors/_edit.html', 
'A /cloudos-ui/branches/bare_metal/scripts/create_skyline_installer.sh', 
'A /cloudos-ui/branches/bare_metal/forms.py', 
'A /cloudos-ui/branches/bare_metal/tables.py', 
'A /cloudos-ui/branches/bare_metal/templates/flavors/_create.html'] 

現在每個字符串的第一個字符是AM。除了第一個字母之外,其中一些字符串是相同的:例如以create_skyline_installer.sh結尾的兩個字符串,從頂部開始第五個,從底部開始第四個。

現在我想要實現的是找到字符串,其中AM後面的字符串的其餘部分是相同的。然後我想刪除以M開頭的列表元素。

我的意思是最終名單應該是這樣的:

['A /cloudos-ui/branches/bare_metal', 
'M /cloudos-ui/branches/bare_metal/packaging/DEBIAN/control', 
'M /cloudos-ui/branches/bare_metal/create_cosmos_installer.sh', 
'M /cloudos-ui/branches/bare_metal/packaging/DEBIAN/control', 
'M /cloudos-ui/branches/bare_metal/scripts/create_skyline_installer.sh', 
'M /cloudos-ui/branches/bare_metal/forms.py', 
'M /cloudos-ui/branches/bare_metal/tables.py', 
'M /cloudos-ui/branches/bare_metal/templates/flavors/_create.html', 
'M /cloudos-ui/branches/bare_metal/templates/flavors/_edit.html'] 

但我無法找到一個解決方案。

請幫我一把。

+0

請發表您已經嘗試了什麼。這裏是一個方向 - 嘗試使用正則表達式來查找以M開頭的字符串 – meghamind

+2

而不是複製和粘貼整個列表,爲什麼不能創建小於表示想要實現的內容的東西?我的眼睛真的很傷心看到這個網格。 –

+0

Jack_of_All_Trades:感謝您的建議。我編輯了列表..請儘量幫助我,如果可以的話。謝謝你... –

回答

1

嘗試對列表進行排序,其中A元素將在M元素之前處理,並使用字典來保存它們,因此第一個條目將被覆蓋。使用reverse=True來保留A條目。

lst = ['A /cloudos-ui/branches/bare_metal (from /cloudos-ui/branches/rc4g1build:9930)',        
'M /cloudos-ui/branches/bare_metal/misc/cosmos/packaging/DEBIAN/control', 
'M /cloudos-ui/branches/bare_metal/misc/cosmos/scripts/create_cosmos_installer.sh', 
'M /cloudos-ui/branches/bare_metal/misc/skyline/packaging/DEBIAN/control', 
'M /cloudos-ui/branches/bare_metal/misc/skyline/scripts/create_skyline_installer.sh', 
'M /cloudos-ui/branches/bare_metal/src/horizon/openstack_dashboard/dashboards/admin/flavors/forms.py', 
'M /cloudos-ui/branches/bare_metal/src/horizon/openstack_dashboard/dashboards/admin/flavors/tables.py', 
'M /cloudos-ui/branches/bare_metal/src/horizon/openstack_dashboard/dashboards/admin/flavors/templates/flavors/_create.html', 
'M /cloudos-ui/branches/bare_metal/src/horizon/openstack_dashboard/dashboards/admin/flavors/templates/flavors/_edit.html', 
'A /cloudos-ui/branches/bare_metal/misc/skyline/scripts/create_skyline_installer.sh', 
'A /cloudos-ui/branches/bare_metal/src/horizon/openstack_dashboard/dashboards/admin/flavors/forms.py', 
'A /cloudos-ui/branches/bare_metal/src/horizon/openstack_dashboard/dashboards/admin/flavors/tables.py', 
'A /cloudos-ui/branches/bare_metal/src/horizon/openstack_dashboard/dashboards/admin/flavors/templates/flavors/_create.html'] 

d = {} 

for elem in sorted(lst): 
    l = elem.split(None, 1) 
    d[l[1]] = elem 

print(list(d.values())) 

它產生:

['A /cloudos-ui/branches/bare_metal (from /cloudos-ui/branches/rc4g1build:9930)', 
'M /cloudos-ui/branches/bare_metal/src/horizon/openstack_dashboard/dashboards/admin/flavors/templates/flavors/_edit.html', 
'M /cloudos-ui/branches/bare_metal/src/horizon/openstack_dashboard/dashboards/admin/flavors/forms.py', 
'M /cloudos-ui/branches/bare_metal/src/horizon/openstack_dashboard/dashboards/admin/flavors/tables.py', 
'M /cloudos-ui/branches/bare_metal/misc/cosmos/packaging/DEBIAN/control', 
'M /cloudos-ui/branches/bare_metal/src/horizon/openstack_dashboard/dashboards/admin/flavors/templates/flavors/_create.html', 
'M /cloudos-ui/branches/bare_metal/misc/skyline/packaging/DEBIAN/control', 
'M /cloudos-ui/branches/bare_metal/misc/cosmos/scripts/create_cosmos_installer.sh', 
'M /cloudos-ui/branches/bare_metal/misc/skyline/scripts/create_skyline_installer.sh'] 
+0

謝謝你,但它也刪除前綴'A'或'M'。我希望他們在最後的輸出..請你可以告訴還有什麼可以做更多的保留他們? –

+0

@NikunjAggarwal:對不起,我不明白你的意思。哪個前綴? – Birei

+0

在每個字符串的前面有'A'或'M' ...我想在刪除重複項後保留它們... –