python - 将字符串列表转换为 int

标签 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)

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

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

最佳答案

您可以使用列表理解:

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

或 map

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

或者只是改变你的线路

lst.append(z)

lst.append(map(int, z))

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

Python3 用户的

更新:

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

关于python - 将字符串列表转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34696853/

相关文章:

python - 在 seaborn lmplot 中访问轴对象

Python 不是很随机地从对象列表中抽样

指向字符串的字符指针

python - 如何将三个不同的列表打印在一行上

python - MongoDB 和 Python - 带列表的字典

python - 在 pymongo 的字典中包含 NumberInt

c# - 获取 C# 字符串的 NON FIRST 段的快速而巧妙的方法

python - 从python脚本中生成的文本中去除重复的单词

r - 测试列表的所有元素(列表本身)是否相等

VB.NET InvokeMember 方法列表