如何删除列表中的数字并保持元素的重置? Python

时间:2019-07-10 14:33:51

标签: python list strip

mylist = ['85639-Joe','653896-Alan','8871203-Zoe','5512-Bob','81021-Jonathan']

上面是列表,我想删除列表中的数字并保留名称。 我尝试了下面的编码,但是没有用。

[s for s in mylist if s.isalpha()]

预期输出为:

['-Joe','-Alan','-Zoe','-Bob','-Jonathan']

预先感谢您的帮助。

6 个答案:

答案 0 :(得分:1)

这是不使用正则表达式的另一种方法:

[''.join(y for y in x if not y.isdigit()) for x in mylist]

结果:

['-Joe', '-Alan', '-Zoe', '-Bob', '-Jonathan']

答案 1 :(得分:1)

如果您为可选的chars参数传递数字串,则内置lstrip function可以做到这一点。

无论您决定采用哪种技术,都请考虑制作一个可以完成工作的辅助函数。您的代码的未来维护者将感谢您。

mylist = ['85639-Joe','653896-Alan','8871203-Zoe','5512-Bob','81021-Jonathan']
mylist.append('29-Biff42Henderson') # corner case

def strip_numeric_prefix(s: str):
    return s.lstrip('0123456789')

result = [strip_numeric_prefix(s) for s in mylist]
print(result)
#output
['-Joe', '-Alan', '-Zoe', '-Bob', '-Jonathan', '-Biff42Henderson']

答案 2 :(得分:0)

我们可以使用正则表达式删除数字,如

import re

[re.sub('\d', '', s) for s in mylist]

给予

['-Joe', '-Alan', '-Zoe', '-Bob', '-Jonathan']

答案 3 :(得分:0)

您可以为此使用正则表达式

['-Joe', '-Alan', '-Zoe', '-Bob', '-Jonathan']

输出:

webView.top

答案 4 :(得分:0)

import re 

def remove(list): 
    pattern = '[0-9]'
    list = [re.sub(pattern, '', i) for i in list] 
    return list

print(remove(list)) 

答案 5 :(得分:0)

mylist = ['85639-Joe','653896-Alan','8871203-Zoe','5512-Bob','81021-Jonathan']

temp = ['-'+e.split('-')[1] for e in mylist]

结果['-Joe','-Alan','-Zoe','-Bob','-Jonathan']