如何将字符串列表转换为整数列表 - 许多事情似乎不起作用

14 浏览
0 Comments

如何将字符串列表转换为整数列表 - 许多事情似乎不起作用

我有一个问题。我想将一个包含594个元素的字符串列表(其中包含许多空元素)转换为整数列表。我已经在这里查找了很多答案,但既不是列表推导也不是map函数似乎起作用。我的命令提示符只是说int参数必须是一个字符串或一个数字,而不是一个列表。\n这是我的代码:\n

fname = raw_input("输入文件名:")
if len(fname) < 1: fname = "regex_sum_317625.txt"
fh = open(fname)
import re
numlist = list()
for line in fh:
    line = line.rstrip()
    numbers = re.findall('[0-9]+', line)
    numlist.append(numbers)
print numlist
listlength = len(numlist)
print listlength
intlist = [int(nums) for nums in numlist]
print intlist

\n我尝试了很多方法,但问题总是我试图对一个不允许的列表进行操作。请问你能帮我吗?我应该做什么?

0
0 Comments

问题的原因是代码中使用了错误的方法来构建数据。代码中使用了re.findall方法,该方法返回的是一个列表,但是代码却将这个列表作为一个元素添加到了numlist列表中。解决方法是使用extend方法来将numlist扩展为一个列表,而不是将列表作为元素添加到numlist中。

另外,可以使用列表推导式来替代for循环,这样代码会更简洁。同时,代码中没有调用文件对象的close方法,可以使用上下文管理器来自动进行文件的关闭操作。

下面是修正后的代码:

import re
with open(fname) as fh:
    int_list = [int(item) for line in fh for item in re.findall('[0-9]+', line)]

使用上述代码,我们可以将字符串列表转换为整数列表。

0