如何将字符串列表转换为整数列表 - 许多事情似乎不起作用
如何将字符串列表转换为整数列表 - 许多事情似乎不起作用
我有一个问题。我想将一个包含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我尝试了很多方法,但问题总是我试图对一个不允许的列表进行操作。请问你能帮我吗?我应该做什么?
问题的原因是代码中使用了错误的方法来构建数据。代码中使用了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)]
使用上述代码,我们可以将字符串列表转换为整数列表。