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
迭代Excel中的行并将其切片,以python中的列表形式存储_Python_List_File Handling - Fatal编程技术网

迭代Excel中的行并将其切片,以python中的列表形式存储

迭代Excel中的行并将其切片,以python中的列表形式存储,python,list,file-handling,Python,List,File Handling,我正在使用Python3版本,并使用xlrd包处理excel工作表 目前excel工作表以单行形式存储,如下所示 price 10 22 34 45 这些数字将在服务器和行值中自动生成,这些值需要取出并存储在不同的列表中(一个列表的大小最大为10),类似于 price_list_1 = price.row_values(10) price_list_2 = price.row_values(11,20) ... ... 因此,可以存储前10个值,并增量存储另外10个值以定价列表,依此类推。

我正在使用Python3版本,并使用xlrd包处理excel工作表 目前excel工作表以单行形式存储,如下所示

price
10
22
34
45
这些数字将在服务器和行值中自动生成,这些值需要取出并存储在不同的列表中(一个列表的大小最大为10),类似于

price_list_1 = price.row_values(10)
price_list_2 = price.row_values(11,20)
...
...
因此,可以存储前10个值,并增量存储另外10个值以定价列表,依此类推。 目前,为了打开和阅读,我正在做如下工作

Price_LIST = 'Daily_price_list/' + 'Price_List_2020.xlsx'
PriceList = xlrd.open_workbook(Price_LIST)
List = PriceList.sheet_by_index(0)
我在这里找到了一些答案,试过了,但没有成功。 这里需要帮助

编辑

我可以通过下面的代码来做这件事

count = 0
for count in range(2, List.nrows):
    if count < 11:
        price_list_1 = List.row_values(count)
        print('\n Printing price_list_1\n',price_list_1)
    elif 10 < count < 21:
        price_list_2 = List.row_values(count)
        print('\n Printing price_list_2\n',price_list_2)
    elif 20 < count < 31:
        price_list_3 = List.row_values(count)
        print('\n Printing price_list_3\n',price_list_3)
    elif 30 < count < 41:
        price_list_4 = List.row_values(count)
        print('\n Printing price_list_4\n',price_list_4)
    elif 40 < count < 51:
        price_list_5 = List.row_values(count)
        print('\n Printing price_list_5\n',price_list_5)
        count + 1
@Grismar提供的澄清和提示很有帮助。
另外,我有不同的线程(精确地说是5个线程)从第一行开始运行每个价格,直到它达到NULL。在代码中,您使用
xlrd阅读整个工作簿(以.xlsx格式)。打开工作簿(价格列表)
,使用
sheet\u by\u索引(0)
选择第一张工作表,然后继续按行号循环该工作表的行(跳过页眉),根据循环参数的值将行的值指定给变量

这导致
price\u list\u 1
具有第10行的值,
price\u list\u 2
具有第20行的值,等等

这不是您想要的,因为您似乎想要读取所有值,跳过标题并将列表划分为每个不超过10个元素的子列表(尽管不清楚为什么需要这样做)。它也不会缩放,因为如果工作表的值超过50,则会遇到问题

只需几行代码即可实现所需的结果:

import xlrd

# get the first sheet from the workbook
price_sheet = xlrd.open_workbook('price.xlsx').sheet_by_index(0)

# get all the values from the first column, skipping the first line
values = price_sheet.col_values(0, 1)
# get values in groups of 10
groups_of_ten = [values[i:i+10] for i in range(0, len(values), 10)]

print(groups_of_ten)

我是否正确地假设您想要的是:从Excel工作表中读取一列数据(跳过标题);然后将数据分成最多10个项目的批次?您的解决方案似乎过于复杂,无法实现这一点,那么您还打算在这里做什么?是什么陈述导致了这个列表的出现?你期望它是什么?@Grismar:-谢谢你的回答,是的,你的假设是正确的。使用xlrd,我正在阅读excel,但在结果中,我得到的输出为
['10','','','']
,这是字符串,我无法使用它。因此,请建议更好的方法。请不要用更多与不同问题相关的问题更新问题(或者可以说,您最初的问题不是关于您最初遇到的问题),而是使用从答案中学到的知识,如果您遇到进一步的问题,或者需要帮助解决问题,发布一个关于这个的新问题。基本上,我有多个线程(最多5个)运行相同的进程,但价格不同。我有不同的价格在10的名单。有了这些列表,我将为每个价格运行不同的线程,以便在线检查和比较。线程完成它自己的列表后,它可以从main更新,或者按照您的建议,每个线程都可以从一个列表中进行更新,但是当一个价格不可用时,第一个线程需要检查下一个的价格时,这将是困难的。如果您的目标是提供要在多个线程上处理的数据,您最好查看Queue类,它允许您在执行线程时从队列中读取价格,而不是在批量价格上进行同步。我认为在评论线程中进行对话既太长也太复杂,这也远远超出了问题的范围。感谢您提供队列类指针,如果您能给我指出一些实现示例,以便我能够理解和实现,那将非常有帮助。我认为这里的文档中有非常好的示例吗?在“队列对象”下,您可能应该举一些例子,尝试用它来解决您的问题,如果遇到问题,请发布一个带有特定问题的新问题。
import xlrd

# get the first sheet from the workbook
price_sheet = xlrd.open_workbook('price.xlsx').sheet_by_index(0)

# get all the values from the first column, skipping the first line
values = price_sheet.col_values(0, 1)
# get values in groups of 10
groups_of_ten = [values[i:i+10] for i in range(0, len(values), 10)]

print(groups_of_ten)