在列表中搜索字符串和 return 列表值

search string in list and return list value

我从 excel sheet 中提取一些值作为列表。 list = [cap-0101-01010, ture-adb-0111-110, bean-KG-0101-2020, fire-Good-2020191, good-9092929, memory-2020939-KGY, excute-odo-2020393, ... ., ending-doo-9090922]

如果列表中有特定字符串的匹配字符串(例如:XY CUTE BGN-excute-odo-2020393),则列表中有return excute-odo-2020393。

这是我的代码,但它不起作用。

list = []
cnt = 0
book1 = xlrd.open_workbook('D:/@. ex.xlsx')
sheet = book1.sheet_by_name('List')
for rowidx in range(sheet.nrows):
    row = sheet.row(rowidx)
    for colidx, cell in enumerate(row):
        list.append(str(cell.value))
book1.release_resources()
del book1


tmp = ''
for mfr in list:
    if mfr in safetyreportid:
        tmp = mfr
        print(mfr)
print(tmp)
        

下面是我执行aboce源代码时的错误信息

Traceback (most recent call last): File "C:\Users\AB\Desktop\parser.py", line 99, in print(mfr) UnicodeEncodeError: 'cp949' codec can't encode character '\xa0' in position 0: illegal multibyte sequence

如果开头的 space 出现问题,您可以比较剥离的字符串。像这样:"apple" == " apple" -> False,但是 "apple".strip() == " apple".strip() -> True

但是我的电脑上没有出现你的错误。我制作了一个 Excel 文件,其中的选项卡 'List' 在第一列中包含字符串(水果)。有些没有 space,有些前后有 space,有些前后有 space。然后,对于 saftyreportid,我使用了 safetyreportid = ["apple", "strawberry", "lemon"] 并且您的代码没有错误(但由于 space 问题只发现了 lemon)。在 if 和下面使用 mfr.strip() 找到所有常用词。

也许您的问题出在 saftyreportid 的传送格式上? (它说编码错误!)

如果您的字符串可能包含反斜杠 (\),我想您应该使用原始字符串格式。 print("\xa0") 不同于 print(r"\xa0")

在excelsheet中,有如下space,那么在apple这一行,就出现了错误

banana
 apple
orange