我从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”
答案 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