如何将一个Unicode字符串与一个lxml元素和一个简单字符串进行比较?
问题描述:
这是我的代码:如何将一个Unicode字符串与一个lxml元素和一个简单字符串进行比较?
for name in doc_preparate.cssselect('.dbl1:first-child'):
if name.text != u"Продукция":
print name.text
我不知道为什么它不工作。这里是结果:
Артрозан
Продукция
Пенталгин
Продукция
Пенталгин
Продукция
Пенталгин
Продукция
Пенталгин
Продукция
...
P.S.
我尝试这样做:
for name in doc_preparate.cssselect('.dbl1:first-child'):
print type(name.text)
if u"Продукция" not in name.text:
print name.text
但它不工作要么:(
我怎样才能解决这个问题
答
检查的name.text
类型
Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a = "allo"
>>> b= u"allo"
>>> type(a)
<type 'str'>
>>> type(b)
<type 'unicode'>
>>>
?
请确保name.text
的类型也是unicode。在P ython 3,所有字符串都是unicode。
答
可能是因为您正在尝试与等号进行字符串比较。这有隐藏的问题,即字符串是字符列表。这在c中更为明显,如果您将其与字符串进行比较,则会得到错误的结果,因为您正在比较第一个字符串的指针和第二个字符串的指针。
Python很聪明,可以使用更明显的比较运算符,但是如果你的字符串不完全相同,那么它将返回false。如果您的数据填充了一定数量的字符,则您的字符串在内部会有所不同。
whitespace = 'Python '
str = 'Python'
这些不一样。要看到,如果你的字符串被输入载,使用
str in whitespace
但是请注意,这将返回true为
'Python' in 'Python '
'Python' in 'PythonAnd other stuff '
检查字符串Python文档获取更多信息和替代方法。
......这引发了一个问题:OP应使用哪种字符编码来解码字符串? – 2011-06-08 15:51:34