如何提取python中unicode字符的真实值?
How to extract the real value of unicode characters in python?
我正在尝试使用 "scrapy" 构建网站的解析器。我目前的目标是提取以下页面列表的所有标题:https://www.avito.ru/leningradskaya_oblast_kirovsk/kvartiry/prodam/1-komnatnye(语言:俄语)。
但是,使用
response.xpath('here_comes_the_path_to_a_title').extract()
我得到这样的结果:
[u'\n 1-\u043a \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0430, 56 \u043c\xb2, 4/5 \u044d\u0442.',
u'\n 1-\u043a \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0430, 32 \u043c\xb2, 3/3 \u044d\u0442.',
u'\n 1-\u043a \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0430, 48 \u043c\xb2, 11/16 \u044d\u0442.',
u'\n 1-\u043a \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0430, 42 \u043c\xb2, 1/4 \u044d\u0442.',
u'\n 1-\u043a \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0430, 37 \u043c\xb2, 1/9 \u044d\u0442.',
u'\n 1-\u043a \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0430, 42 \u043c\xb2, 3/4 \u044d\u0442.',
u'\n 1-\u043a \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0430, 45 \u043c\xb2, 3/3 \u044d\u0442.',]
这显然是以 unicode 编码的所有标题的列表。
现在,问题来了。我想要这些项目(上面列表的值)以它们的原始形式(就像它们是在互联网页面上用原始语言写的一样)。
例如,我想要一本字典:
{'title': 'the_first_value_of_the_above_list_in_original_language'}
然后将此类词典的列表存储在 JSON 或 CSV 文件中。
是否可以解码这些 unicode 字符串并获取它们的原始值?
*p.s。我还注意到我使用 python shell:
中的打印函数获得了原始值
>>> str = u'\n 1-\u043a \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0430, 56 \u043c\xb2, 4/5 \u044d\u0442.'
>>> print str
但我不知道如何提取此值并将其写入文件*
... which is obviously a list of all titles encoded in unicode.
不正确。它是字符串中包含的字符的表示。正如您使用 REPL 发现的那样,字符串本身确实包含您期望的字符。
如果您需要将这些字符写入文件,则需要为文件选择一种编码并在打开时使用它。
with io.open('output.txt', 'w', encoding='utf-8') as fp:
我正在尝试使用 "scrapy" 构建网站的解析器。我目前的目标是提取以下页面列表的所有标题:https://www.avito.ru/leningradskaya_oblast_kirovsk/kvartiry/prodam/1-komnatnye(语言:俄语)。
但是,使用
response.xpath('here_comes_the_path_to_a_title').extract()
我得到这样的结果:
[u'\n 1-\u043a \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0430, 56 \u043c\xb2, 4/5 \u044d\u0442.', u'\n 1-\u043a \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0430, 32 \u043c\xb2, 3/3 \u044d\u0442.', u'\n 1-\u043a \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0430, 48 \u043c\xb2, 11/16 \u044d\u0442.', u'\n 1-\u043a \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0430, 42 \u043c\xb2, 1/4 \u044d\u0442.', u'\n 1-\u043a \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0430, 37 \u043c\xb2, 1/9 \u044d\u0442.', u'\n 1-\u043a \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0430, 42 \u043c\xb2, 3/4 \u044d\u0442.', u'\n 1-\u043a \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0430, 45 \u043c\xb2, 3/3 \u044d\u0442.',]
这显然是以 unicode 编码的所有标题的列表。
现在,问题来了。我想要这些项目(上面列表的值)以它们的原始形式(就像它们是在互联网页面上用原始语言写的一样)。 例如,我想要一本字典:
{'title': 'the_first_value_of_the_above_list_in_original_language'}
然后将此类词典的列表存储在 JSON 或 CSV 文件中。
是否可以解码这些 unicode 字符串并获取它们的原始值?
*p.s。我还注意到我使用 python shell:
中的打印函数获得了原始值>>> str = u'\n 1-\u043a \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0430, 56 \u043c\xb2, 4/5 \u044d\u0442.'
>>> print str
但我不知道如何提取此值并将其写入文件*
... which is obviously a list of all titles encoded in unicode.
不正确。它是字符串中包含的字符的表示。正如您使用 REPL 发现的那样,字符串本身确实包含您期望的字符。
如果您需要将这些字符写入文件,则需要为文件选择一种编码并在打开时使用它。
with io.open('output.txt', 'w', encoding='utf-8') as fp: