2013-06-11 51 views
4

我對Python相當陌生。我有一個列表如下:從列表中刪除特定字符python

sorted_x = [('pvg-cu2', 50.349189), ('hkg-pccw', 135.14921), ('syd-ipc', 163.441705), ('sjc-inap', 165.722676)] 

我想寫一個正則表達式後,將刪除所有「 - 」和之前的「」,即我需要同一份名單如下看:

[('pvg', 50.349189), ('hkg', 135.14921), ('syd', 163.441705), ('sjc', 165.722676)] 

我寫了一個正則表達式如下:

for i in range(len(sorted_x)): 

    title_search = re.search('^\(\'(.*)-(.*)\', (.*)\)$', str(sorted_x[i]), re.IGNORECASE) 
    if title_search: 
     title = title_search.group(1) 
     time = title_search.group(3) 

但是這需要我創建兩個新的名單,我不想改變我原來的名單。 您能否請您提出一個簡單的方法,以便我可以修改我的原始列表而不創建新列表?

+1

這裏有一個提示,你並不需要在列表中的逗號後處理,您正則表達式只需要對付「稱號」,因此要去除-cu2你只需要處理該文本字符串。轉到Python文檔的列表/元組 –

回答

8
result = [(a.split('-', 1)[0], b) for a, b in sorted_x] 

例子:

>>> sorted_x = [('pvg-cu2', 50.349189), ('hkg-pccw', 135.14921), ('syd-ipc', 163.441705), ('sjc-inap', 165.722676)] 
>>> [(a.split('-', 1)[0], b) for a, b in sorted_x] 
[('pvg', 50.349189000000003), ('hkg', 135.14921000000001), ('syd', 163.44170500000001), ('sjc', 165.72267600000001)] 
+0

Worked Perfectly!非常感謝 :) –

相關問題