строка поиска в списке и возвращаемое значение списка

#python-3.x #list #xlrd

#python-3.x #Список #xlrd

Вопрос:

Я извлекаю некоторые значения из листа Excel в виде списка. список = [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), затем верните 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.

Трассировка (последний последний вызов): файл «C:UsersABDesktopparser.py «, строка 99, в печати (mfr) Ошибка UnicodeEncodeError: кодек ‘cp949’ не может кодировать символ ‘ xa0’ в позиции 0: недопустимая многобайтовая последовательность

Ответ №1:

Если пробел в начале создает проблемы, вы можете сравнить удаленные строки. Вот так: "apple" == " apple" -> False, но "apple".strip() == " apple".strip() -> True

Но ваша ошибка не возникает на моем компьютере. Я создал файл Excel с вкладкой «Список», которая содержит строки (фрукты) в первом столбце. Некоторые без пробела, некоторые с пробелом до, а некоторые с пробелом до и после. Затем для saftyreportid, который я использовал safetyreportid = ["apple", "strawberry", "lemon"] , и с вашим кодом ошибки не было (но найден только lemon из-за проблемы с пространством). Используя mfr.strip() в if и ниже, он нашел все общие слова.

Возможно, ваша проблема заключается в формате, в котором доставляется saftyreportid? (Это говорит об ошибке кодирования!)

Я думаю, если ваши строки могут содержать обратную косую черту (), вам следует использовать формат raw string . print("xa0") отличается от print(r"xa0")

Ответ №2:

На листе Excel есть пробел, как показано ниже, затем в строке apple возникает ошибка

 banana
 apple
orange