读取 Excel 文件并将数据写入字典
Read Excel file and write the data to a dictionary
我有一个 Excel 文件,其中包含如下两列:
Reviews| Numbers
text1 | 1,3
text2 | 2
text3 | 1
text4 | 2
text5 | 1
我正在读取数据如下:
def read_xls(filename):
book = xlrd.open_workbook(filename)
sheet = book.sheet_by_index(0)
data=[]
for row_index in xrange(1, sheet.nrows): # skip heading row
reviews, numbers = sheet.row_values(row_index, end_colx=2)
data.append(reviews)
但是我不想将列作为单独的列表,而是希望字典中的结果如下:
{1: [text1, text3, text5], 2: [text2, text4], 3: [text1]}
我该怎么做?
它应该适用于下面的代码
def read_xls(filename):
book = xlrd.open_workbook(filename)
sheet = book.sheet_by_index(0)
data = {}
for row_index in xrange(1, sheet.nrows): # skip heading row
reviews, numbers = sheet.row_values(row_index, end_colx=2)
number_list = numbers.split(",")
for number in number_list:
if number not in data:
data[number] = []
data[number].append(reviews)
您可以使用 defaultdict
:
from collections import defaultdict
data = defaultdict(list)
for row_index in xrange(1, sheet.nrows):
reviews, numbers = sheet.row_values(row_index, end_colx=2)
data[numbers].append(reviews)
我有一个 Excel 文件,其中包含如下两列:
Reviews| Numbers
text1 | 1,3
text2 | 2
text3 | 1
text4 | 2
text5 | 1
我正在读取数据如下:
def read_xls(filename):
book = xlrd.open_workbook(filename)
sheet = book.sheet_by_index(0)
data=[]
for row_index in xrange(1, sheet.nrows): # skip heading row
reviews, numbers = sheet.row_values(row_index, end_colx=2)
data.append(reviews)
但是我不想将列作为单独的列表,而是希望字典中的结果如下:
{1: [text1, text3, text5], 2: [text2, text4], 3: [text1]}
我该怎么做?
它应该适用于下面的代码
def read_xls(filename):
book = xlrd.open_workbook(filename)
sheet = book.sheet_by_index(0)
data = {}
for row_index in xrange(1, sheet.nrows): # skip heading row
reviews, numbers = sheet.row_values(row_index, end_colx=2)
number_list = numbers.split(",")
for number in number_list:
if number not in data:
data[number] = []
data[number].append(reviews)
您可以使用 defaultdict
:
from collections import defaultdict
data = defaultdict(list)
for row_index in xrange(1, sheet.nrows):
reviews, numbers = sheet.row_values(row_index, end_colx=2)
data[numbers].append(reviews)