Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.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 openpyxl-从输入文件读取第三行_Python_Openpyxl - Fatal编程技术网

Python openpyxl-从输入文件读取第三行

Python openpyxl-从输入文件读取第三行,python,openpyxl,Python,Openpyxl,输入文件格式已更改。 原始输入文件 更改的输入文件 A B C 1 Title 2 Name Color Result 3 Tom Red True 4 Tom Red False 5 Marry Green False 6 Marry Green True 7 Babara Red False 现在,我想读取输入文件的第三行 如何修改下面的代码 import collections from openpyxl impor

输入文件格式已更改。 原始输入文件

更改的输入文件

   A      B      C
1 Title
2 Name  Color  Result 
3 Tom    Red    True
4 Tom    Red    False
5 Marry  Green  False
6 Marry  Green  True
7 Babara Red    False
现在,我想读取输入文件的第三行

如何修改下面的代码

import collections
from openpyxl import load_workbook
wb1 = load_workbook('test.xlsx')
ws1 = wb1['test']
a_dict = collections.defaultdict(list)
for row in ws1.rows:
    a_dict[row[0].value+','+row[1].value].append(str(row[2].value))

wb2 = Workbook(write_only=True)
ws2 = wb2.create_sheet()
for key,value in a_dict.items():
    temp = key.split(',')
    temp.append(','.join(value))
    ws2.append(temp)
wb2.save('new_test.xlsx') 
输出文件如下所示

ab结果
汤姆·瑞德对,错
嫁给格林是假,是真
3巴巴拉红假

通过
n-1
访问集合中的任何元素,其中
n
是列表中的位置(因为我们从0开始在列表中计数)。如果
ws\u in.rows
是一个生成器,您必须将其转换为一个列表,也可以使用
list(ws\u in.rows)[2]
访问第三行。

您可以使用
ws.iter\u rows()
控制要读取的行,如果您想从第三行读取,只需设置
min\u row=3

,因此我尝试了
用于列表中的行(ws\u in.rows)[2]:a_dict[row[1].value+'、'+row[2].value].append(str(row[6].value))
和错误:
a_dict[row[1].value+'、'+row[2].value].append(str(row[6].value])TypeError:“Cell”对象不支持索引
OK,所以听起来像ws.in.rows是
Cell
对象列表。所以对它调用索引是行不通的。从行中删除
[1]
[2]
[6]
。好的。。我在代码后面使用'a_dict.item'。所以我不能删除[1]、[2]、[6],但您不再遍历这些行,所以这样做没有意义。您正在遍历第三行中的列。
import collections
from openpyxl import load_workbook
wb1 = load_workbook('test.xlsx')
ws1 = wb1['test']
a_dict = collections.defaultdict(list)
for row in ws1.rows:
    a_dict[row[0].value+','+row[1].value].append(str(row[2].value))

wb2 = Workbook(write_only=True)
ws2 = wb2.create_sheet()
for key,value in a_dict.items():
    temp = key.split(',')
    temp.append(','.join(value))
    ws2.append(temp)
wb2.save('new_test.xlsx')