Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.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

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
Python 如何将csv读入元组列表?_Python_List_Csv_Tuples - Fatal编程技术网

Python 如何将csv读入元组列表?

Python 如何将csv读入元组列表?,python,list,csv,tuples,Python,List,Csv,Tuples,我希望我的最终名单如下: index_list=[(slice(170, 255), slice(22, 32)), (slice(170, 255), slice(69, 79)), (slice(170, 255), slice(118, 128)), (slice(170, 255), slice(163, 173)), etc etc etc] 但是我想在excel中存储元组值,例如,单元格A1可能是 (slice(170, 255), slice(22, 32)) 。。。对于所有切

我希望我的最终名单如下:

index_list=[(slice(170, 255), slice(22, 32)),
(slice(170, 255), slice(69, 79)),
(slice(170, 255), slice(118, 128)),
(slice(170, 255), slice(163, 173)),
etc
etc
etc]
但是我想在excel中存储元组值,例如,单元格A1可能是

(slice(170, 255), slice(22, 32))
。。。对于所有切片元组值,依此类推。或者excel中的单元格可能只是有编号的值

170, 255, 22, 32
哪些python可以用来创建元组。我不在乎excel中的格式是什么,我只想将值存储在那里,并将它们作为具有该字符串格式的元组列表读取。以下是我所能得到的信息:

with open('index_values.csv') as infile:
    reader = csv.reader(infile)
    next(reader, None)  # skip the headers
    for row in reader:
        index_list.append(tuple(str(row).replace('[','').replace(']','').replace('"','').split(', ')))

您可以只取第二种格式的CSV的一行,并使用python中的ast模块对其进行解析:

import ast
index_list = ast.literal_eval("["+first_row+"]")
然后,
index\u list
包含您想要的内容,您只需要成对地获取每个元素:

new_list = []
for i in range(0,index_list,2):
    new_list.append(slice(index_list[i],index_list[i+1]))

如果您的csv看起来像这样:

170, 255, 22, 32
125, 320, 14, 24
您只需读取每两个值,并在列表中存储这两个值的
slice()

import csv

index_list = []
with open('index_values.csv') as infile:
    reader = csv.reader(infile)
    for row in reader:
        line = [x.strip() for x in row]
        slices = [slice(int(x), int(y)) for x, y in zip(line[::2], line[1::2])]

        index_list.append(tuple(slices))

print(index_list)
哪些产出:

[(slice(170, 255, None), slice(22, 32, None)), (slice(125, 320, None), slice(14, 24, None))]

注意:具有默认步长,如果未指定,则默认步长为
None

在主体中添加您可以添加您的(公认不完整的)代码吗?对我来说,这只是返回: