Python unicode: how to test against unicode string
I have a script like this:
#!/Python26/
# -*- coding: utf-8 -*-
import sys
import xlrd
import xlwt
argset = set(sys.argv[1:])
#----------- import ----------------
wb = xlrd.open_workbook("excelfile.xls")
#----------- script ----------------
#Get the first sheet either by name
sh = wb.sheet_by_name(u'Data')
hlo = []
for i in range(len(sh.col_values(8))):
if sh.cell(i, 1).value in argset:
if sh.cell(i, 8).value == '':
continue
hlo.append(sh.cell(i, 8).value)
excelfile.xls contains unicode strings and I want to test against these strings from command line:
C:\>python pythonscript.py päätyö
pythonscript.py:34: UnicodeWarning: Unicode equal comparison failed to convert both arguments to
icode - interpreting them as being unequal
if s开发者_如何转开发h.cell(i, 1).value in argset:
How should I modify my code for Unicode?
Python has a sequence type called unicode which will be useful here. These links contain more information to help you regarding this:
- Python Unicode HOWTO
- Python built-in types (See section 6.6).
- Unicode In Python, Completely Demystified
Try encoding the Excel unicode to string using cp1252 (windows default unicode) and then testing. I know a lot of people don't recommend this, but this is what sometimes solve my problems.
Pseudo=> if sh.cell(i, 1).value.encode('cp1252') in argset:
...
Br.
精彩评论