我遇到了与Python 3相关的问题:
我得到一个包含[b'1']
整数是一个变量(有时是1,有时是5,有时是938等)。
我只想从列表中获取整数。
我该怎么做?
答案 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(更容易请求宽恕而不是许可)