Python-在HTTP POST请求中发送unicode字符(前缀为\u)

Python-在HTTP POST请求中发送unicode字符(前缀为\u),python,unicode,Python,Unicode,我正在编写一个程序,用于获取和编辑Wikipedia上的文章,但在处理以\u为前缀的Unicode字符时遇到了一些问题。我已经尝试了.encode(“utf8”),但它在这里似乎不起作用。如何正确地对这些以\u为前缀的值进行编码以发布到Wikipedia?看看我的问题。 下面是一些代码: 要获取该页面,请执行以下操作: url = "http://en.wikipedia.org/w/api.php?action=query&format=json&titles="+urllib

我正在编写一个程序,用于获取和编辑Wikipedia上的文章,但在处理以\u为前缀的Unicode字符时遇到了一些问题。我已经尝试了.encode(“utf8”),但它在这里似乎不起作用。如何正确地对这些以\u为前缀的值进行编码以发布到Wikipedia?看看我的问题。 下面是一些代码: 要获取该页面,请执行以下操作:

url = "http://en.wikipedia.org/w/api.php?action=query&format=json&titles="+urllib.quote(name)+"&prop=revisions&rvprop=content"
articleContent = ClientCookie.urlopen(url).read().split('"*":"')[1].split('"}')[0].replace("\\n", "\n").decode("utf-8")
data = dict([(key, value.encode('utf8')) for key, value in data.iteritems()])
data["text"] = data["text"].replace("\\", "")
editInfo = urllib2.Request("http://en.wikipedia.org/w/api.php", urllib.urlencode(data))
在我发布页面之前:

url = "http://en.wikipedia.org/w/api.php?action=query&format=json&titles="+urllib.quote(name)+"&prop=revisions&rvprop=content"
articleContent = ClientCookie.urlopen(url).read().split('"*":"')[1].split('"}')[0].replace("\\n", "\n").decode("utf-8")
data = dict([(key, value.encode('utf8')) for key, value in data.iteritems()])
data["text"] = data["text"].replace("\\", "")
editInfo = urllib2.Request("http://en.wikipedia.org/w/api.php", urllib.urlencode(data))

您正在下载JSON数据,但未对其进行解码。请使用以下命令:

import json

articleContent = ClientCookie.urlopen(url)
data = json.load(articleContent)
JSON编码的数据看起来很像Python,它也使用了
\u
转义,但实际上它是JavaScript的一个子集

data
变量现在拥有一个深层数据结构。从琴弦的分裂判断,你想要这首曲子:

articleContent = data['query']['pages'].values()[0]['revisions'][0]['*']
现在articleContent是一个实际的
unicode()
实例;这是您要查找的页面的修订文本:

>>> print u'\n'.join(data['query']['pages'].values()[0]['revisions'][0]['*'].splitlines()[:20])
{{For|the game|100 Bullets (video game)}}
{{GOCEeffort}}
{{italic title}}
{{Supercbbox  <!--Wikipedia:WikiProject Comics-->
| title =100 Bullets
| image =100Bullets vol1.jpg
| caption = Cover to ''100 Bullets'' vol. 1 "First Shot, Last Call". Cover art by Dave Johnson.
| schedule = Monthly
| format =
|complete=y
|Crime       = y
| publisher = [[Vertigo (DC Comics)|Vertigo]]
| date = August [[1999 in comics|1999]] – April [[2009 in comics|2009]]
| issues = 100
| main_char_team = [[Agent Graves]] <br/> [[Mr. Shepherd]] <br/> The Minutemen <br/> [[List of characters in 100 Bullets#Dizzy Cordova (also known as "The Girl")|Dizzy Cordova]] <br/> [[List of characters in 100 Bullets#Loop Hughes (also known as "The Boy")|Loop Hughes]]
| writers = [[Brian Azzarello]]
| artists = [[Eduardo Risso]]<br>Dave Johnson
| pencillers =
| inkers =
| colorists = Grant Goleash<br>[[Patricia Mulvihill]]
>>打印u'\n'.连接(数据['query']['pages'].values()[0]['revisions'][0]['*'].splitlines()[:20])
{{游戏{100发子弹(电子游戏)}
{{GOCEeffort}}
{{斜体标题}}
{{超级盒子
|标题=100颗子弹
|图像=100vol1.jpg
|标题=第1卷“第一枪,最后一击”的封面。戴夫·约翰逊的封面艺术。
|计划=每月
|格式=
|完整=y
|犯罪=y
|出版商=[[Vertigo(DC漫画)| Vertigo]]
|日期=8月[[1999年漫画| 1999]]–4月[[2009年漫画| 2009]]
|问题=100
|主队队员=[[Graves探员]]
[[Shepherd先生]
民兵
[[100发子弹中的人物名单#Dizzy Cordova(也称为“女孩”)| Dizzy Cordova]
[[100发子弹中的人物名单#Loop Hughes(也称为“男孩”)| Loop Hughes]] |编剧=[[Brian Azzarello]] |艺术家=[[Eduardo Risso]]
戴夫·约翰逊 |铅笔匠= |墨水瓶= |色彩师=格兰特·戈莱什
[[Patricia Mulvihill]]
我们希望看到一些代码。我马上会添加一些。我希望看到一些示例数据;您将
u2013
发布为文字文本(5个字符),看起来一开始就没有
\u2013
代码点(一个字符)。我添加了。只是。替换(\\”,“”)改变了它。整个代码是在感谢-这工作和unicode字符正确显示在文本框中。