使用 Python 2.7 和 xlrd 在 Excel 电子表格行中搜索特定字母序列
Searching for a particular letter sequence in an Excel spreadsheet row using Python 2.7 and xlrd
我刚开始在 Python 2.7.12 中使用 xlrd,我不知道我做错了什么;似乎是数据类型不匹配。
基本上,我在 Excel 电子表格 (.xlsx) 中搜索一系列两列宽的行中的字母序列,如果找到,我想复制整个行到新的电子表格中。
电子表格中的数据看起来像...
R1: TheName_of_the_thing_XYZQ , Description of the thing with keyword1
R1: TheName_of_another_thing_61PD , Description of the thing with keyword2
这是我目前所知道的...
import xlrd
search_for = ['XYZQ', 'keyword2', 'foo', 'FOO']
book = xlrd.open_workbook('csv-test.xlsx')
i = 0
j = 0
sheet1 = book.sheet_by_index(1)
for i in range(sheet1.nrows):
row = sheet1.row_values(i)
for j in range(len(row)):
if row[j] == search_for:
print 'found it!'
else:
print 'sorry'
当我 运行 这样做时,它从未在 search_for 中找到任何内容,只是为每一行打印 'sorry'。
所以我知道它打开了正确的文档,解析了每一行,等等。我还尝试了 cell_value 和 row_slice。
谢谢!
我认为你的错误在于这些行:
if row[j] == search_for:
在你的例子中,row[j]
是Unicode格式的单元格内容,search_for是开头声明的列表。
也就是说你有这种情况,例如:
if u'TheName_of_the_thing_XYZQ' == ['XYZQ', 'keyword2', 'foo', 'FOO']:
并且不起作用。
我将您的脚本修改为 searc_for
列表中的以下循环,并检查单个单元格是否包含列表的元素之一。
import xlrd
search_for = ['XYZQ', 'keyword2', 'foo', 'FOO']
book = xlrd.open_workbook('test.xlsx')
sheet = book.sheet_by_index(0)
for idx in range(sheet.nrows):
row = sheet.row_values(idx)
name = row[0]
description = row[1]
print "==== row number {} ====".format(idx + 1)
for key in search_for:
if key in name:
print "in 'name' column, found {}".format(name)
if key in description:
print "in 'description' column, found {}".format(name)
告诉我
我刚开始在 Python 2.7.12 中使用 xlrd,我不知道我做错了什么;似乎是数据类型不匹配。
基本上,我在 Excel 电子表格 (.xlsx) 中搜索一系列两列宽的行中的字母序列,如果找到,我想复制整个行到新的电子表格中。
电子表格中的数据看起来像...
R1: TheName_of_the_thing_XYZQ , Description of the thing with keyword1
R1: TheName_of_another_thing_61PD , Description of the thing with keyword2
这是我目前所知道的...
import xlrd
search_for = ['XYZQ', 'keyword2', 'foo', 'FOO']
book = xlrd.open_workbook('csv-test.xlsx')
i = 0
j = 0
sheet1 = book.sheet_by_index(1)
for i in range(sheet1.nrows):
row = sheet1.row_values(i)
for j in range(len(row)):
if row[j] == search_for:
print 'found it!'
else:
print 'sorry'
当我 运行 这样做时,它从未在 search_for 中找到任何内容,只是为每一行打印 'sorry'。
所以我知道它打开了正确的文档,解析了每一行,等等。我还尝试了 cell_value 和 row_slice。
谢谢!
我认为你的错误在于这些行:
if row[j] == search_for:
在你的例子中,row[j]
是Unicode格式的单元格内容,search_for是开头声明的列表。
也就是说你有这种情况,例如:
if u'TheName_of_the_thing_XYZQ' == ['XYZQ', 'keyword2', 'foo', 'FOO']:
并且不起作用。
我将您的脚本修改为 searc_for
列表中的以下循环,并检查单个单元格是否包含列表的元素之一。
import xlrd
search_for = ['XYZQ', 'keyword2', 'foo', 'FOO']
book = xlrd.open_workbook('test.xlsx')
sheet = book.sheet_by_index(0)
for idx in range(sheet.nrows):
row = sheet.row_values(idx)
name = row[0]
description = row[1]
print "==== row number {} ====".format(idx + 1)
for key in search_for:
if key in name:
print "in 'name' column, found {}".format(name)
if key in description:
print "in 'description' column, found {}".format(name)
告诉我