Scrapy项目管道

时间:2015-03-06 13:05:45

标签: python scrapy

我正在使用杂乱的蜘蛛和我自己的项目管道

 value['Title'] = item['Title'][0] if ('Title' in item) else ''
        value['Name'] = item['Name'][0] if ('CompanyName' in item) else ''
        value['Description'] = item['Description'][0] if ('Description' in item) else ''

当我这样做时,我得到前缀为u

的值

示例:当我将值传递给o / p并打印时

value['Title'] = u'hospital'

我的代码出了什么问题以及为什么我会收到u以及如何将其删除

任何人都可以帮助我吗?

谢谢,

2 个答案:

答案 0 :(得分:2)

u表示该字符串表示为unicode。您可以通过将字符串传递给str来删除u。 str(u'test')。但是对于大多数用途,您可以将其视为正常字符串。例如

>>> u'test' == 'test'
True

如果您的字符无法使用plain ascii表示,则应保持unicode方式。如果你对非ascii字符调用str,你会得到一个异常。

>>> test=u'বাংলা'
>>> test
u'\u09ac\u09be\u0982\u09b2\u09be'
>>> str(test)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)

u不是字符串的一部分,它只是一种指示字符串类型的方法。

>>> type('test')
<type 'str'>
>>> type(u'test')
<type 'unicode'>

有关详细信息,请参阅以下问题:

What does the 'u' symbol mean in front of string values?

答案 1 :(得分:1)

要删除u符号,您可以将字符串编码为ASCII,如下所示:value['Title'].encode("ascii")