Python Unicode字符串到Javascript
我希望在json文件中使用单个反斜杠获得输出,该文件是javascript/HTML文档的输入。它是为了使用vis.js进行可视化 我无法摆脱Python在反斜杠之前添加反斜杠的方式。我尝试过转义反斜杠并使用r“”类型的字符串 我有一本字典:Python Unicode字符串到Javascript,javascript,python,json,unicode,Javascript,Python,Json,Unicode,我希望在json文件中使用单个反斜杠获得输出,该文件是javascript/HTML文档的输入。它是为了使用vis.js进行可视化 我无法摆脱Python在反斜杠之前添加反斜杠的方式。我尝试过转义反斜杠并使用r“”类型的字符串 我有一本字典: f = {'id':0,'group':'main', 'label':'Main', \ 'font':{'size': 60}, 'shape': 'icon', 'icon': {'face':'Ionicons',\ 'code': r'\uf27
f = {'id':0,'group':'main', 'label':'Main', \
'font':{'size': 60}, 'shape': 'icon', 'icon': {'face':'Ionicons',\
'code': r'\uf276', 'size':200, 'color':'#f0a30a'}, \
'color': {'background': 'pink', 'border': 'black'}}
In [91]: print f
'{'group': 'main', 'color': {'border': 'black', 'background': 'pink'}, 'label': 'Main', 'shape': 'icon', 'font': {'size': 60}, 'id': 0, 'icon': {'size': 200, 'color': '#f0a30a', 'code': '\\uf276', 'face': 'Ionicons'}}
我使用json.dumps将其转储到json文件中
In [92]: json.dumps(f)
Out[92]: '{"group": "main", "color": {"border": "black", "background": "pink"}, "label": "Main", "shape": "icon", "font": {"size": 60}, "id": 0, "icon": {"size": 200, "color": "#f0a30a", "code": "\\\\uf276", "face": "Ionicons"}}'
In [93]: print json.dumps(f)
{"group": "main", "color": {"border": "black", "background": "pink"}, "label": "Main", "shape": "icon", "font": {"size": 60}, "id": 0, "icon": {"size": 200, "color": "#f0a30a", "code": "\\uf276", "face": "Ionicons"}}
我使用json.dump(filename,f)将此字符串保存到一个文件中,并输出以下内容:
{
"group": "main",
"color": {
"border": "black",
"background": "pink"
},
"label": "Main",
"shape": "icon",
"font": {
"size": 60
},
"id": 0,
"icon": {
"size": 200,
"color": "#f0a30a",
"code": "\\uf276",
"face": "Ionicons"
}
}
包含反斜杠的字符串是原始字符串。它不包含所需的unicode字符,而是实际的反斜杠,后跟“uf276” 将其转换为普通字符串:
f = {'id':0,'group':'main', 'label':'Main', \
'font':{'size': 60}, 'shape': 'icon', 'icon': {'face':'Ionicons',\
'code': '\uf276', 'size':200, 'color':'#f0a30a'}, \
'color': {'background': 'pink', 'border': 'black'}}
那么json转储也应该起作用:
>>> print(json.dumps(f, indent=4))
{
"shape": "icon",
"font": {
"size": 60
},
"label": "Main",
"color": {
"background": "pink",
"border": "black"
},
"group": "main",
"id": 0,
"icon": {
"face": "Ionicons",
"color": "#f0a30a",
"size": 200,
"code": "\uf276"
}
}
我会给你
{
"group": "main",
"color": {
"border": "black",
"background": "pink"
},
"label": "Main",
"shape": "icon",
"font": {
"size": 60
},
"id": 0,
"icon": {
"size": 200,
"color": "#f0a30a",
"code": "\xef\x89\xb6",
"face": "Ionicons"
}
}
编辑
此外,代码应该是
u'\uf276'
您的反斜杠位于原始字符串(r'foobar'
)中,这就是为什么它实际上是反斜杠,而不是转义序列。即使这样,它也不起作用。我也试过普通的字符串。当我使用json.dumps()保存它时,它只是在这之前添加了一个额外的反斜杠。@mousecoder,当然,当您在REPL中查看结果字符串json.dumps
时。但当您打印它(或将其转储到文件中)时,这没关系,请参见编辑。我认为问题在于,当您打印它时,它不会打印双反斜杠,但如果您将其保存在json文件中,字符串会显示双反斜杠。你能查一下吗?
{
"group": "main",
"color": {
"border": "black",
"background": "pink"
},
"label": "Main",
"shape": "icon",
"font": {
"size": 60
},
"id": 0,
"icon": {
"size": 200,
"color": "#f0a30a",
"code": "\xef\x89\xb6",
"face": "Ionicons"
}
}