#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