有没有办法只从python列表中输出字符串格式的数字?

2024-09-29 01:24:18 发布

您现在位置:Python中文网/ 问答频道 /正文

简单问题:

如何仅从字符串列表中提取整数(无浮点)

像这样:

list_1 = [['50', 'ALA', 'A', '53', '5', '4'], ['55', 'GLY', 'A', '60', '1', '6'], ['67', 'ILE', 'A', '71', '5', '5']]

对此:

list_1 = [['50', '53', '5', '4'], ['55', '60', '1', '6'], ['67', '71', '5', '5']]

谢谢你


Tags: 字符串列表整数list浮点alailegly
3条回答

您可以使用str.isdigit方法

>>> list_1 = ['50', 'ALA', 'A', '53', '5', 'N', '4']
>>> list_1 = [x for x in list_1 if x.isdigit()]
>>> list_1
['50', '53', '5', '4']

请注意,这不适用于数字的浮点表示

>>> '650.43'.isdigit()
False

如果你想过滤这些,写一个传统的循环

>>> list_1 = ['50', '650.43', 'test']
>>> result = []
>>> for x in list_1:
...     try:
...         float(x)
...         result.append(x)
...     except ValueError:
...         pass
... 
>>> result
['50', '650.43']

你可以试试这个:

list_1 = ['50', 'ALA', 'A', '53', '5', 'N', '4']

digits = []
for item in list_1:
    for subitem in item.split():
        if(subitem.isdigit()):
            digits.append(subitem)
print(digits) 

输出:

['50', '53', '5', '4']

它可以通过这段代码来完成,它也可以管理浮动,处理错误和异常

Loop can be converted into comprehension for more Pythonic way.

def isfloat(value):
  try:
    float(value)
    return True
  except:
    return False

v = ['50', 'ALA', 'A', '53', '5', 'N', '4']
result = []
for x, i in enumerate(map(isfloat, v)):
    if i is True:
    result.append(v[x])

print result # [50, 53, 5, 4]

相关问题 更多 >