小能豆

将字符串列表转换为 int

py

我有一个字符串列表,我想将其转换为 int,或者从一开始就将其包含在 int 中。

任务是从文本中提取数字(并计算总和)。我做了以下事情:

for line in handle:
    line = line.rstrip()
    z = re.findall("\d+",line)
    if len(z)>0:
        lst.append(z)
print (z)

这给了我一个像这样的列表[['5382', '1399', '3534'], ['1908', '8123', '2857']。我尝试了map(int,...另一件事,但得到了如下错误:

TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'

阅读 12

收藏
2024-11-18

共1个答案

小能豆

您可以使用列表推导:

>>> [[int(x) for x in sublist] for sublist in lst]
[[5382, 1399, 3534], [1908, 8123, 2857]]

或地图

>>> [map(int, sublist) for sublist in lst]
[[5382, 1399, 3534], [1908, 8123, 2857]]

或者改变你的路线

lst.append(z)

lst.append(map(int, z))

您的地图不起作用的原因是您试图将其应用于int列表列表的每个列表,而不是每个子列表的每个元素。

Python3 用户更新:

在 Python3 中,map将返回一个 map 对象,您必须手动将其转换回列表,即而list(map(int, z))不是map(int, z)

2024-11-18