在列表中搜索字符串并返回列表值

时间:2020-09-21 15:16:08

标签: python-3.x list xlrd

我从Excel工作表中提取了一些值作为列表。 列表= [cap-0101-01010,ture-adb-0111-110,bean-KG-0101-2020,fire-Good-2020191,good-9092929,内存-2020939-KGY,excute-odo-2020393,... 。,结尾为-doo-9090922]

如果列表中存在与特定字符串匹配的字符串(例如:XY CUTE BGN-excute-odo-2020393),则返回列表中的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)
        

下面是我执行高级源代码时的错误消息。

回溯(最近通话最近): 文件“ C:\ Users \ AB \ Desktop \ parser.py”在第99行中 打印(MFR) UnicodeEncodeError:“ cp949”编解码器无法在位置0:非法的多字节序列中编码字符“ \ xa0”

2 个答案:

答案 0 :(得分:1)

如果开头的空格引起问题,则可以比较剥离的字符串。像这样:"apple" == " apple"-> False,但是"apple".strip() == " apple".strip()-> True

但是我的计算机上没有发生您的错误。我制作了一个带有“列表”标签的Excel文件,该标签的第一列中包含字符串(水果)。有的没有空间,有的在空间之前有空间,有的在空间前后有空间。然后,对于saftyreportid,我使用了safetyreportid = ["apple", "strawberry", "lemon"],并且在您的代码中没有错误(但由于空间问题,只找到了柠檬)。在mfr.strip()及其下方使用if可以找到所有常用词。

也许您的问题是采用saftyreportid的格式? (它说编码错误!)

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

不同

答案 1 :(得分:0)

在Excel工作表中,下面有空格,然后在苹果行中发生了错误

banana
 apple
orange