Фрагмент кода ниже фокусируется на доступе к ячейкам results.csv
, основанным на координатах, предоставленных в annotations_full.csv
Сначала создается список диктов (OrderedDicts с Python 3.6) путем итерации по csv.DictReader
экземпляр на results.csv
.
Затем он перебирает экземпляр DictReader
на annotations_full.csv
, выбирая координаты для поиска ячеек results.csv
и печатает содержимое ячейкивместе с некоторыми мерами предосторожности для недопустимых имен столбцов и номеров строк.
Обратите внимание на [rnum - 1]
, используемый для предоставления индекса для списка result_content
.Списки Python начинаются с нуля;кроме случаев, когда номера строк в annotations_full.csv
учитывают это (например, первая строка в results.csv
указана с номером строки 0
), вам это необходимо для доступа к правильному элементу списка.
import csv
annos = "annotations_full.csv"
results = "results.csv"
with open(results) as r:
result_content = [row for row in csv.DictReader(r)]
with open(annos) as a:
for row in csv.DictReader(a):
rnum = int(row['row_number'])
qnum = row['question_number']
print("Result for question {} row {}:".format(qnum, rnum)
try:
print(result_content[rnum - 1][qnum])
except KeyError:
print("no column '{}' in {}".format(qnum, results))
except IndexError:
print("column '{}' has no row {} in {}".format(qnum, rnum, results))
Содержимоеобразца annotations_full.csv
:
row_number,question_number
5,Q5.3
6,Q5.1
2,Q2.1
1,Q3.3
Содержимое образца results.csv
:
Q5.3,Q5.1,Q2.1,Q3.3
result Q5.3-1,result Q5.1-1,result Q2.1-1,result Q3.3-1
result Q5.3-2,result Q5.1-2,result Q2.1-2,result Q3.3-2
result Q5.3-3,result Q5.1-3,result Q2.1-3,result Q3.3-3
result Q5.3-4,result Q5.1-4,result Q2.1-4,result Q3.3-4
result Q5.3-5,result Q5.1-5,result Q2.1-5,result Q3.3-5
result Q5.3-6,result Q5.1-6,result Q2.1-6,result Q3.3-6
Вывод фрагмента кода с использованием файлов примеров:
Result for question Q5.3 row 5:
result Q5.3-5
Result for question Q5.1 row 6:
result Q5.1-6
Result for question Q2.1 row 2:
result Q2.1-2
Result for question Q3.3 row 1:
result Q3.3-1