mylist = ['85639-Joe','653896-Alan','8871203-Zoe','5512-Bob','81021-Jonathan']
上面是列表,我想删除列表中的数字并保留名称。 我尝试了下面的编码,但是没有用。
[s for s in mylist if s.isalpha()]
预期输出为:
['-Joe','-Alan','-Zoe','-Bob','-Jonathan']
预先感谢您的帮助。
答案 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']