删除json列表中的u'

时间:2016-08-27 13:41:46

标签: php python database encoding user-input

我有一个python脚本,用于查询带有一组信息的服务器。 我需要将其放入php网站使用的数据库中。然而,有一个特定的字段,我返回description字段,这是用户输入,在某些情况下使用几个ASCII字符,但在我将它放入数据库之前,我必须将其转换为utf-8 。它没问题,但它给我留下了一个问题,因为它返回一个带有u'字符的JSON数组,这使得它不可读

我正在对输入执行以下操作:

unicode(status.description).encode('utf8')

返回以下字符串

{u'text': u'', u'extra': [{u'color': u'white', u'text': u'                       '}, {u'color': u'dark_gray', u'text': u'\xbb '}, {u'color': u'gold', u'text': u'Velocity', u'bold': True}, {u'color': u'red', u'text': u'MC ', u'bold': True}, {u'color': u'dark_gray', u'text': u'\xab\n'}, {u'color': u'white', u'text': u'               '}, {u'color': u'gray', u'text': u'\u25b6 '}, {u'color': u'yellow', u'text': u'HCF SOTW ', u'bold': True}, {u'color': u'red', u'text': u'8/28 ', u'italic': True}, {u'color': u'gold', u'text': u'3PM EST ', u'italic': True}, {u'color': u'gray', u'text': u'\u25c0'}]}

虽然我需要这样的东西:

{"extra":[{"text":" ","color":"white"},{"text":"» ","color":"dark_gray"},{"text":"Velocity","color":"gold","bold":true},{"text":"MC ","color":"red","bold":true},{"text":"«\n","color":"dark_gray"},{"text":" ","color":"white"},{"text":"▶ ","color":"gray"},{"text":"2.0 ","color":"red","bold":true},{"text":"OPFACTIONS HAS BEEN RELEASED ","color":"yellow","bold":true},{"text":"◀","color":"gray"}],"text":""}

作为一个不熟悉python的人,我不知道如何解决这个问题,我尝试了几种不同的编码方式,就像希望它会变得不同

status.description.encode('utf8')

unicode(status.description).encode('utf8')

status.description.encode('utf-8')

unicode(status.description).encode('utf-8')

还有一些使用ASCII,但到目前为止还没有骰子。

有没有办法可以在我将它放入数据库之前从列表中删除此u但仍然使用utf8编码? (或者如果可能的话,通过php)

2 个答案:

答案 0 :(得分:2)

如果status.description返回了一个字典并且您希望它是JSON,则应该在其上调用json.dumps(),而不是unicode()

但是,dict中存在u个字符是一个问题,无需修复。

答案 1 :(得分:0)

print(some_dict)打印dict对象的字符串表示形式。您需要将dict对象转换为JSON。

import json
print(json.dumps(some_dict))