将字符串列表转换为int

ero*_*oar 4 python string list type-conversion

我有一个字符串列表,我想转换为int,或从一开始就在int中.

任务是从文本中提取数字(并得到总和).我做的是这样的:

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

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

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

tim*_*geb 7

您可以使用列表理解:

>>> [[int(x) for x in sublist] for sublist in lst]
[[5382, 1399, 3534], [1908, 8123, 2857]]
Run Code Online (Sandbox Code Playgroud)

或地图

>>> [map(int, sublist) for sublist in lst]
[[5382, 1399, 3534], [1908, 8123, 2857]]
Run Code Online (Sandbox Code Playgroud)

或者只是改变你的路线

lst.append(z)
Run Code Online (Sandbox Code Playgroud)

lst.append(map(int, z))
Run Code Online (Sandbox Code Playgroud)

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

Python3用户的更新:

在Python3中,map将返回一个地图对象,您必须手动将其转换回列表,即list(map(int, z))代替map(int, z).