a = ['+321','+09e8','\sdf5234','6']
我想将其转换为所有数字的列表。换句话说,从列表中的所有字符串中删除所有非数字字符。结果应该是一个整数列表,而不是字符串。
[321,98, 5234, 6]
非常感谢您的帮助!谢谢
答案 0 :(得分:2)
您可以使用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)以外的所有字符。
答案 1 :(得分:1)
像这样简单易懂的东西就能解决问题...
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
)
希望有帮助!
答案 2 :(得分:0)
没有正则表达式,您可以将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]