a = ['+321','+09e8','\sdf5234','6']
Я хочу преобразовать его в список всех чисел. Другими словами, удалите все нецифровые символы из всех строк из списка. Результатом должен быть список целых чисел, а не строк.
[321,98, 5234, 6]
Любая помощь очень ценится! Спасибо
Что-то простое и легкое для понимания, как это, сделает свое дело ...
a = ['+321','+09e8','\sdf5234','6'] b = [] c = '' for item in a: for char in item: if char.isdigit(): c += char b.append(int(c)) c = '' print(b)
Он проходит по каждому элементу в списке a и проходит по каждому символу a. Он проверяет, является ли символ числом, и если да, добавляет его в строку, чтобы добавить к выводу (b)
a
b
Надеюсь, это поможет!
Без регулярных выражений вы можете использовать str.isdigit с пониманием списка:
str.isdigit
a = ['+321','+09e8','\sdf5234','6'] res = [int(''.join([i for i in x if i.isdigit()])) for x in a] [321, 98, 5234, 6]
Вы можете использовать re.sub
re.sub
In [1]: import re In [2]: a = ['+321','+09e8','\sdf5234','6'] In [3]: [int(re.sub('[^0-9]','',x)) for x in a] Out[3]: [321, 98, 5234, 6]
Здесь re.sub('[^0-9]','',x) заменит все символы, кроме цифр (0-9) в строке.
re.sub('[^0-9]','',x)