![](/img/trans.png)
[英]Using python and xlrd, what is the best way to read 2 columns from a spreadsheet
[英]Python: Using xlrd library to read data from excel spreadsheet gives me incorrect number of rows
我正在使用 xlrd 库来阅读工作簿。 我使用以下代码读取包含单词的列和行并将其放入字典中:
import xlrd
EXCEL_FILE = "Hangman_words.xlsx"
def main():
"""Main application entry point."""
# To open Workbook
wb = xlrd.open_workbook(EXCEL_FILE)
sheet = wb.sheet_by_index(0)
word_dict = {}
for i in range(sheet.ncols):
try:
#print(sheet.cell_value(0, i))
category_name = sheet.cell_value(0, i)
if not category_name:
break
word_dict[category_name] = []
for j in range(sheet.nrows):
try:
#print(sheet.cell_value(j+1, i))
word = sheet.cell_value(j+1, i)
if not word:
break
word_dict[category_name].append(word)
except:
break
except:
break
print(word_dict)
if __name__ == "__main__":
main()
在我的 excel 文件中,第 1 列一直到第 51 行,第 2 列一直到第 53 行,第 3 列一直到第 38 行。但是,在我的 Python 代码中,设置了范围(sheet.ncols) to (0,3) 和 range(sheet.nrows) 设置为 (0,53) 并且此行号对于每列不正确,因为如前所述,它会有所不同。
我的代码也为第 2 列抛出异常。因此,我必须设置一些异常和 if 条件以确保代码在出现任何错误或存在空白单元格时跳出循环。
因为,我对使用这个 xlrd 库还很陌生,我想知道是否有办法为我可以迭代的每列获取正确的行数? 或者,如果有更好的 xl 库可以胜过我正在使用的当前库。 提前致谢。
“范围(sheet.ncols)设置为(0,3),范围(sheet.nrows)设置为(0,53)”--正确。 xlrd 只会限制从 1stRow1stCol 到 53rdRow3rdCol 的数据范围
麻烦的是您的列底部有空值。 你必须分析它并阻止它进一步阅读。
“我的代码也引发了第 2 列的异常”
for j in range(sheet.nrows):
try:
#print(sheet.cell_value(j+1, i))
word = sheet.cell_value(j+1, i)
当 j 来到 range(53) 的最后一个时, j=52 sheet.cell_value(53, 0) 当然它违反了 xlrd 中的数据范围,因为 nrow 被限制为 0,1,...,52 一个更正将是:
for j in range(1, sheet.nrows):
try:
#print(sheet.cell_value(j, i))
word = sheet.cell_value(j, i)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.