1

第一次使用这些东西。查看有关内部化/文本编码的所有其他 SOF 问题。

我正在做 Scrapy 教程,当我卡在这部分时:提取数据,当我提取数据时,文本而不是希伯来语显示为一系列 \uXXXX。

例如,您可以通过抓取此页面来检查它;

scrapy shell http://israblog.nana10.co.il/blogread.asp?blog=167524&blogcode=13348970
hxs.select('//h2[@class="title"]/text()').extract()[0]

这将检索

u'\u05de\u05d9 \u05d0\u05e0\u05e1 \u05e4\u05d5\u05d8\u05e0\u05e6\u05d9\u05d0\u05dc\u05d9?'

(无关:)如果您尝试在控制台中打印它,您会得到: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Python27\lib\encodings\cp437.py", line 12, in encode return codecs.charmap_encode(input,errors,encoding_map) UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-1: cha racter maps to <undefined>

尝试通过设置设置编码,尝试手动转换,基本上我觉得我什么都试过了。

(我已经尝试了大约 5 个番茄钟来解决这个问题!)

我该怎么做才能得到应该在那里的希伯来文文本:“ מי אנס פוטנציאלי?

(免责声明:我刚刚进入第一个博客并在http://Israblog.co.il上发布了我注意到的帖子,我与博客或博客所有者没有任何关系,我只是将其用作示例)

4

2 回答 2

2

我该怎么做才能得到应该在那里的希伯来文文本:“מיאנספוטנציאלי?”

test.py

# coding: utf-8

a = u'\u05de\u05d9 \u05d0\u05e0\u05e1 \u05e4\u05d5\u05d8\u05e0\u05e6\u05d9\u05d0\u05dc\u05d9?'
b = 'מי אנס פוטנציאלי?'

print a
print b

结果:

vic@wic:~/projects/snippets$ python test.py 
מי אנס פוטנציאלי?
מי אנס פוטנציאלי?
vic@wic:~/projects/snippets$

如您所见,它们是相同的。它只是同一个 unicode 字符串的不同表示。所以不要担心它没有被正确刮掉。

如果要将其保存到文件中:

Python 2.7.3 (default, Apr 20 2012, 22:39:59) 
[GCC 4.6.3] on linux2
>>> a = u'\u05de\u05d9 \u05d0\u05e0\u05e1 \u05e4\u05d5\u05d8\u05e0\u05e6\u05d9\u05d0\u05dc\u05d9'
>>> a
u'\u05de\u05d9 \u05d0\u05e0\u05e1 \u05e4\u05d5\u05d8\u05e0\u05e6\u05d9\u05d0\u05dc\u05d9'
>>> f = open('test.txt', 'w')
>>> f.write(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
>>> f.write(a.encode('utf-8'))
>>> f.close()
于 2012-07-07T13:23:54.883 回答
0

您是否尝试过将您从页面获得的信息存储在 json、xml 中时会得到什么。

我在少数几个站点上遇到了一些标志的问题,在大多数情况下,如果您不对检索到的数据做任何事情,它会正确存储,但是如果您尝试在控制台中将它们打印出来,您将无法获得正确的结果,或者如果你不使用 repr 会报错

print repr(data)

我希望这会有所帮助,因为我知道编码问题的挫败感。

于 2012-07-07T11:45:12.677 回答