Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.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
Python 在列表理解中将字符串转换为整数_Python_Python 3.x_List - Fatal编程技术网

Python 在列表理解中将字符串转换为整数

Python 在列表理解中将字符串转换为整数,python,python-3.x,list,Python,Python 3.x,List,我正在尝试编写一个函数,它获取文件并用新行拆分它,然后使用逗号分隔符(,)再次拆分它,之后我只想使用列表理解将列表中的每个字符串转换为整数 # My code but it's not converting the splitted list into integers. def read_csv(filename): string_list = open(filename, "r").read().split('\n') string_list = string_list[1:

我正在尝试编写一个函数,它获取文件并用新行拆分它,然后使用逗号分隔符(,)再次拆分它,之后我只想使用列表理解将列表中的每个字符串转换为整数

# My code but it's not converting the splitted list into integers.
def read_csv(filename):
    string_list = open(filename, "r").read().split('\n')
    string_list = string_list[1:len(string_list)]
    splitted = [i.split(",") for i in string_list]
    final_list = [int(i) for i in splitted]
    return final_list

read_csv("US_births_1994-2003_CDC_NCHS.csv")

Output:
TypeError: int() argument must be a string, a bytes-like object or a number, not 'list' 
使用逗号分隔符(,)拆分后数据的外观

如何将此输出中的每个字符串转换为整数,并使用列表理解将其分配给单个列表

str.split()
生成一个新列表;因此,
splitted
是一个列表列表。您希望转换每个包含列表的内容:

[[int(v) for v in row] for row in splitted]
演示:

请注意,您也可以直接在文件上循环以获得单独的行:

string_list = [line.strip().split(',') for line in openfileobject]
可以使用
next(iterableobject,None)
跳过这样一个对象中的条目

与其将整个文件读入内存并手动拆分数据,您只需使用:

上面是一个生成器函数,在循环时一次生成一行:

for row in read_csv("US_births_1994-2003_CDC_NCHS.csv"):
    print(row)
您仍然可以使用
列表(读取“\u csv”(“US\u Barties\u 1994-2003\u CDC\u NCHS.csv”))获取包含所有行的列表。
str.split()
生成一个新列表;因此,
splitted
是一个列表列表。您希望转换每个包含列表的内容:

[[int(v) for v in row] for row in splitted]
演示:

请注意,您也可以直接在文件上循环以获得单独的行:

string_list = [line.strip().split(',') for line in openfileobject]
可以使用
next(iterableobject,None)
跳过这样一个对象中的条目

与其将整个文件读入内存并手动拆分数据,您只需使用:

上面是一个生成器函数,在循环时一次生成一行:

for row in read_csv("US_births_1994-2003_CDC_NCHS.csv"):
    print(row)

您仍然可以使用
列表(读取“\u csv”(“US\u Barties\u 1994-2003\u CDC\u NCHS.csv”)

从使用
csv
模块开始,不要在分隔符上重新发明拆分文件
splitted
是一个列表列表,您希望转换其中包含的每个列表。是否可以不使用csv模块,因为我是python新手,我更喜欢使用列表理解,我对csv模块了解不多;我的答案向您展示了这两个选项。从使用
csv
模块开始,不要重新发明在分隔符上拆分文件
splitted
是一个列表列表,您希望转换其中包含的每个列表。是否可以不使用csv模块,因为我是python新手,我更喜欢使用列表理解,我对csv模块了解不多;我的回答告诉你两种选择。你能解释一下吗?@Saikumar:不确定哪部分不清楚?嵌套列表理解将列表理解应用于拆分的
中的每个列表[int(v)表示行中的v]因此这是在外部列表中迭代列表,对吗?没错,因此列表理解允许您对迭代中的每个元素执行操作:
[iterable中对象的某些内容]
;这里的
something
是另一个列表理解,iterable中的每个对象本身就是一个字符串列表。因此,
[[int(v)表示行中的v]表示行中被拆分的]
获取被拆分的
中的每个列表,将其分配给
,然后获取列表中分配给
的每个值,并将该值(分配给
v
)转换为整数。结果列表是新列表输出中的一个对象。你能解释一下吗?@Saikumar:不确定哪部分不清楚?嵌套列表理解将列表理解应用于拆分的
中的每个列表[int(v)表示行中的v]因此这是在外部列表中迭代列表,对吗?没错,因此列表理解允许您对迭代中的每个元素执行操作:
[iterable中对象的某些内容]
;这里的
something
是另一个列表理解,iterable中的每个对象本身就是一个字符串列表。因此,
[[int(v)表示行中的v]表示行中被拆分的]
获取被拆分的
中的每个列表,将其分配给
,然后获取列表中分配给
的每个值,并将该值(分配给
v
)转换为整数。结果列表是新列表输出中的一个对象。