这两个值是一样的吗?

时间:2016-04-25 20:35:53

标签: python python-2.7

我从一个网站中提取一些值,当我只是按原样获取文本时,我得到了这样的结果:

u'Used Car for Sale \xa0\xa0 - \xa0'

注意你

但是当我做.encode("utf-8")

我得到了这个值:

'Used Car for Sale \xc2\xa0\xc2\xa0 - \xc2\xa0'

注意没有你

这两个值是否相同?

我想存储值,我应该存储哪个值?

2 个答案:

答案 0 :(得分:1)

在python 2中,它们都继承自basestring,但它们的类型不同,一个是unicode,另一个是str。所以没有可比性而且不一样。

除非您使用默认情况下字符串为unicode的python 3,否则以下情况属实:

u'Used Car for Sale \xa0\xa0 - \xa0' == 'Used Car for Sale \xa0\xa0 - \xa0'

但以下不是:

u'Used Car for Sale \xa0\xa0 - \xa0' == 'Used Car for Sale \xa0\xa0 - \xa0'.encode('utf-8')

因为编码的一种类型是字节,所以再次无法比较。

我会说你如何存储它取决于许多原因。也许您希望保留文本与收到文本完全一致,或者您希望在将这些文本显示在这些编码不重要或增加噪音的地方进行清理,即用空格等替换\xa0

另外,请查看这个优秀的答案,因为它详细解释了它们的不同之处 - 也许这有助于您做出决定:Python str vs unicode types

答案 1 :(得分:0)

字符串实际上是不同的类型(分别为unicodestr),所以它们不一样。

至于存储,这取决于你将在何处以及如何进行存储,但它最终必须以某种方式进行编码(并且在检索时显然已经解码)。