【问题标题】:Is there a way to output the numbers, that are in string format, only from a python list?有没有办法仅从 python 列表中输出字符串格式的数字?
【发布时间】:2018-04-03 09:14:12
【问题描述】:

简单的问题:

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

像这样:

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']]

谢谢。

【问题讨论】:

  • 是的,列表中的所有数字都是整数。
  • 我编辑了问题。

标签: python list extract


【解决方案1】:

您可以使用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']

【讨论】:

  • @Stennis 如果答案解决了您的问题,请考虑accepting the answer.
  • 我可以在列表中的列表中执行相同的编码吗?
  • 点赞:[['50', 'ALA', 'A', '53', '5', '4'], ['55', 'GLY', 'A', '60', '1', '6'], ['67', 'ILE', 'A', '71', '5', '5']]
  • 找到了解决办法。
【解决方案2】:

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

循环可以转换为更 Pythonic 的方式。

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]

【讨论】:

    【解决方案3】:

    你可以试试这个:

    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']
    

    【讨论】:

      【解决方案4】:

      你可以这样做

      list_1 = ['50', 'ALA', 'A', '53', '5', 'N', '4']
      list_2 =[]
      for i in range(len(list_1)):
          if list_1[i].isnumeric():
              list_2.append(list_1[i])
      print(list_2) 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-10-04
        • 1970-01-01
        • 2018-09-10
        • 1970-01-01
        • 1970-01-01
        • 2019-01-14
        • 2023-04-07
        相关资源
        最近更新 更多