开发者

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜