从列表python中删除特定字符

wan*_*eek 4 python regex

我对Python很新.我有一个列表如下:

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

我正在尝试编写一个正则表达式,它将删除' - '之后和','之前的所有内容,即我需要相同的列表,如下所示:

[('pvg', 50.349189), ('hkg', 135.14921), ('syd', 163.441705), ('sjc', 165.722676)]
Run Code Online (Sandbox Code Playgroud)

我写了一个正则表达式如下:

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)
Run Code Online (Sandbox Code Playgroud)

但这需要我创建两个新列表,我不想更改我的原始列表.您能否建议一个简单的方法,以便我可以修改我的原始列表而无需创建新列表?

And*_*ark 8

result = [(a.split('-', 1)[0], b) for a, b in sorted_x]
Run Code Online (Sandbox Code Playgroud)

例:

>>> 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)]
Run Code Online (Sandbox Code Playgroud)