我正在使用scrapy,我抓了一些网站并将抓取页面中的项目存储到json文件中,但其中一些包含以下格式。
l = ["Holding it Together",
"Fowler RV Trip",
"S\u00e9n\u00e9gal - Mali - Niger","H\u00eatres et \u00e9tang",
"Coll\u00e8ge marsan","N\u00b0one",
"Lines through the days 1 (Arabic) \u0633\u0637\u0648\u0631 \u0639\u0628\u0631 \u0627\u0644\u0623\u064a\u0627\u0645 1",
"\u00cdndia, Tail\u00e2ndia & Cingapura"]
我可以预期该列表包含不同的格式,但我想转换它并将列表中的字符串与原始名称一起存储,如下所示
l = ["Holding it Together",
"Fowler RV Trip",
"Lines through the days 1 (Arabic) سطور عبر الأيام 1 | شمس الدين خ | Blogs" ,
"Índia, Tailândia & Cingapura "]
提前致谢...........
答案 0 :(得分:7)
您有包含unicode转义的字节字符串。您可以使用unicode_escape
编解码器将它们转换为unicode:
>>> print "H\u00eatres et \u00e9tang".decode("unicode_escape")
Hêtres et étang
您可以将其编码回字节字符串:
>>> s = "H\u00eatres et \u00e9tang".decode("unicode_escape")
>>> s.encode("latin1")
'H\xeatres et \xe9tang'
您可以过滤和解码非unicode字符串,如:
for s in l:
if not isinstance(s, unicode):
print s.decode('unicode_escape')
答案 1 :(得分:1)
我想转换它并将字符串存储在列表中,其原始名称如下所示
当您序列化为JSON时,可能会有一个标志,允许您关闭非ASCII字符到\u
序列的转义。如果您使用的是标准库json
模块,则为ensure_ascii
:
>>> print json.dumps(u'Índia')
"\u00cdndia"
>>> print json.dumps(u'Índia', ensure_ascii= False)
"Índia"
但请注意,如果采取这种安全措施,您现在必须能够以正确的方式处理非ASCII字符,否则您将得到一堆UnicodeError
个。例如,如果要将JSON写入文件,则必须将Unicode字符串显式编码为所需的字符集(例如UTF-8)。
j= json.dumps(u'Índia', ensure_ascii= False)
open('file.json', 'wb').write(j.encode('utf-8'))