如何找到数字在字符串列表中的位置?

时间:2018-11-05 09:12:18

标签: python string python-3.x list

 a = ['+321','+09e8','\sdf5234','6']

我想将其转换为所有数字的列表。换句话说,从列表中的所有字符串中删除所有非数字字符。结果应该是一个整数列表,而不是字符串。

[321,98, 5234, 6]

非常感谢您的帮助!谢谢

3 个答案:

答案 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]