Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 将str列表更改为int列表_String_List_Csv_Python 3.x - Fatal编程技术网

String 将str列表更改为int列表

String 将str列表更改为int列表,string,list,csv,python-3.x,String,List,Csv,Python 3.x,我正在尝试读取CSV文件,并将数据作为INT列表返回。CSV文件有6列宽和2行。使用Python 3.4 它总是以STR列表的形式出现。搜索StackOverflow和Google显示了7种不同的方法,但都不起作用。下面是我尝试过的代码 import csv b = [] with open('C:\Python34\DataforProgramstorun\\csv data6x2.csv') as f: reader = csv.reader(f) for row in reader :

我正在尝试读取CSV文件,并将数据作为INT列表返回。CSV文件有6列宽和2行。使用Python 3.4

它总是以STR列表的形式出现。搜索StackOverflow和Google显示了7种不同的方法,但都不起作用。下面是我尝试过的代码

import csv
b = []
with open('C:\Python34\DataforProgramstorun\\csv data6x2.csv') as f:
reader = csv.reader(f)
for row in reader :
    b.append(row) # this gives me a list of list each element a csv str from print (b)

print (b)
结果是:

[['2', '5', '15', '17', '19', '20'], ['6', '8', '14', '18', '21', '30']]
我希望是:

[[2, 5, 15, 17, 19, 20], [6, 8, 14, 18, 21, 30]]
以下工作均未完成:

  • [int(x)for y in b for x in y.split()]#builtins.AttributeError:'list'对象没有属性“split”

  • [int(x)表示“”中的x。join(b).split()]#builtins.TypeError:序列项0:预期的str实例,找到的列表

  • 按原样导入itertools;new=list(it.imap(int,b))#builtins.AttributeError:'module'对象没有属性'imap'

  • 对于范围(0,len(b))中的i:b[i]=int(b[i])#内置。TypeError:int()参数必须是字符串或数字,而不是“列表”

  • results=b;results=[results中i的int(i)]##内置。TypeError:int()参数必须是字符串或数字,而不是“list”

  • b=list(map(int,b))35; builtins.TypeError:int()参数必须是字符串或数字,而不是“list”

  • [int(i)for i in b]35; builtins.TypeError:int()参数必须是字符串或数字,而不是“list”

  • 你所有尝试过的解决方案的问题是你只会深入一层。所以你要考虑外部列表,但是直接尝试内部列表,通常失败。要解决这个问题,您需要直接处理内部列表。您也可以这样解决它:

    for i, sublist in enumerate(b):
        b[i] = [int(x) for x in sublist]
    

    您还可以使用许多其他解决方案中的一种来将(子)列表中的所有字符串转换为int,而不是
    [int(x)for x in sublist]
    ,例如
    list(map(int,sublist))

    On#3,Python 3没有
    itertools.imap
    ,因为
    map
    现在是一个迭代器。在其他大多数情况下,请注意,您需要将它们应用于
    b
    中的每个列表,而不是应用于
    b
    本身。谢谢,除了解决方案之外,您还告诉了我为什么my无法工作。非常感谢
    for i, sublist in enumerate(b):
        b[i] = [int(x) for x in sublist]