如何将Unicode字符串与lxml元素和简单字符串进行比较?

2024-06-02 09:05:46 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的代码:

    for name in doc_preparate.cssselect('.dbl1:first-child'):
        if name.text != u"Продукция":
            print name.text

我不知道为什么不起作用。结果如下:

^{pr2}$

p.S

我试过了:

    for name in doc_preparate.cssselect('.dbl1:first-child'):
        print type(name.text)
        if u"Продукция" not in name.text:
            print name.text

但它也不起作用:

我怎样才能解决这个问题?在


Tags: 代码textnameinchildfordocif
2条回答

可能是因为您正在尝试与等号进行字符串比较。这有隐藏的问题,即字符串是字符列表。这在c语言中更为明显,在c语言中,如果将第一个字符串的指针与第二个字符串的指针进行比较,则会得到不好的结果。在

Python非常聪明,可以使用更明显的比较运算符,但是如果字符串不是完全相同的,那么它将返回false。如果数据是用空格填充到一定数量的字符,则字符串在内部会有所不同。在

whitespace = 'Python   '
str = 'Python'

它们的评估结果不一样。要查看输入是否包含字符串,请使用

^{pr2}$

但请注意,对于

'Python' in 'Python    '
'Python' in 'PythonAnd other stuff   '

查看关于字符串的python文档以了解更多信息和替代方法。在

检查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。在python3中,所有字符串都是unicode。在

相关问题 更多 >