Как убрать числа в списке и сохранить сброс элементов? питон - PullRequest
1 голос
/ 10 июля 2019
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 ]

1 голос
/ 10 июля 2019

Встроенная функция lstrip может сделать это, если вы передадите строку цифр для необязательного параметра chars.

Независимо от того, какую технику вы выберете, рассмотрите возможность создания вспомогательной функции, которая будет работать. Будущие разработчики вашего кода будут вам благодарны.

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']
1 голос
/ 10 июля 2019

Вот еще один способ без использования регулярных выражений:

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

Результаты:

['-Joe', '-Alan', '-Zoe', '-Bob', '-Jonathan']
0 голосов
/ 10 июля 2019
mylist = ['85639-Joe','653896-Alan','8871203-Zoe','5512-Bob','81021-Jonathan']

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

результат ['-Joe', '-Alan', '-Zoe', '-Bob', '-Jonathan']

0 голосов
/ 10 июля 2019
import re 

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

print(remove(list)) 
0 голосов
/ 10 июля 2019

Вы можете использовать регулярные выражения для этого

import re

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

print([re.sub(r'\b\d+\b', '', word) for word in mylist])

Вывод:

['-Joe', '-Alan', '-Zoe', '-Bob', '-Jonathan']
0 голосов
/ 10 июля 2019

Мы можем использовать регулярные выражения для удаления цифр, как в

import re

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

давая

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