python 3只选择带有字符串的列表中的整数

时间:2014-04-28 20:21:22

标签: python string list python-3.x integer

我遇到了与Python 3相关的问题:

我得到一个包含[b'1']

的列表

整数是一个变量(有时是1,有时是5,有时是938等)。

我只想从列表中获取整数。

我该怎么做?

3 个答案:

答案 0 :(得分:0)

对于a = [b'1'],请执行:

x = int(a[0])

或首先从二进制字符串到str的解码(假设为ASCII),执行:

x = int(a[0].decode('ascii'))

答案 1 :(得分:0)

>>> l = [b'1', b'2', b'abc']
>>> n = [int(elem) for elem in l if elem.isdigit()]
>>> print n
[1, 2]

编辑:嗯,你是对的;它打破了字符串中的负值。更简单的方法是:

>>> n = []
>>> for elem in l:
...     try:
...             n.append(int(elem))
...     except ValueError:
...             pass
... 
>>> n
[1, 2]

答案 2 :(得分:0)

一种方法是尝试转换为int。您需要使用辅助函数,因为您无法处理列表解析中的异常。这适用于正整数和负整数

def try_int(s):
    try:
        return int(s)
    except ValueError:
        return s

new_list = [try_int(item) for item in old_list]

这种技术被称为EAFP(更容易请求宽恕而不是许可)

相关问题