Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将JavaScript字典转换为Python语法_Javascript_Python - Fatal编程技术网

如何将JavaScript字典转换为Python语法

如何将JavaScript字典转换为Python语法,javascript,python,Javascript,Python,从启用了javascript的应用程序(如Adobe)内部将javascript字典写入外部.jsx文件(使用dict.toSource())生成的字典的上下文如下所示: ({one:"1", two:"2"}) (请注意,编写字典键是因为它们是变量名(这不是真的)。 下一步是用Python读取这个.jsx文件。我需要找到一种方法将({one:“1”,two:“2”})转换为Python字典语法,例如: {'one':"1", 'two':"2"} 已经有人建议不要使用JavaScript的

从启用了
javascript
的应用程序(如Adobe)内部将
javascript
字典写入外部.jsx文件(使用
dict.toSource()
)生成的字典的上下文如下所示:

({one:"1", two:"2"})
(请注意,编写字典键是因为它们是变量名(这不是真的)。 下一步是用Python读取这个.jsx文件。我需要找到一种方法将
({one:“1”,two:“2”})转换为Python字典语法,例如:

{'one':"1", 'two':"2"}
已经有人建议不要使用
JavaScript
的内置
dict.toSource()
使用
JSON
会更有意义,它将编写类似于
Python
语法的词典内容。但不幸的是,使用
JSON
对我来说不是一个选项。我需要找到一种方法将
({one:“1”,two:“2”)转换成
{code>{one':“1”,“two':“2”}
单独使用Python。对如何实现这一点有什么建议吗?再一次,问题主要出在字典键语法中,Python内部看起来像变量名,而不是像字典键名那样的字符串:

one vs "one"
稍后编辑: 以下是从
JaveScript
内部导出的
JavaScript
字典所产生的output.txt文件的内容。目标是将output.txt文件的内容读入Python并将其转换为Python字典。 请记住,字典就这么简单。在现实世界中,它将是一个兆字节长,有许多嵌套的键/值

同样,output.txt的内容:

({one:"1", two:"2"})
我们需要将其转换为Python语法字典(如果在Python中使用JSON,则可以使用JSON):


对于不包含封闭对象的普通对象,这是一个基本的字符串操作问题

一旦有了复合对象,我将向您展示的代码就会失败

让我们启动Python 2.7并使用您的示例字符串:

>x='({1:1,2:2})

现在你想要的是一份口述

我们对迪克特了解多少

dict可以从(key,value)“2-ples”列表中生成,我指的是两个元素列表的列表,而不是python元组只读列表的列表

每个元组都表示一个属性,如
one:“1”

首先,我们需要将x缩减为包含所需信息的子字符串

显然,括号和方括号是多余的,因此我们可以写:

>>> left = x.find("{")
>>> right = x.find("}")
>>> y = x[left+1:right]
这里,
String.find()
方法查找搜索字符串参数的第一个索引

符号
x[n:m]
是x的第n个字符到第m-1个字符(含)的子字符串

获得:

>>> y
'one:"1", two:"2"'
>>> z
['one:"1"', ' two:"2"']
这只是一个字符串,不是一个元组,但如果我们用逗号分割,它可以成为一个元组

>>> z = y.split(",")
获得:

>>> y
'one:"1", two:"2"'
>>> z
['one:"1"', ' two:"2"']
现在,这些字符串中的每一个都代表一个属性,我们需要梳理出键和值

我们可以用一个简单的方法来实现这一点

>>> zz = [ (s[0:s.find(":")].strip(),s[s.find('"')+1:-1].strip()) for s in z]
我们再次使用
find()
获取冒号和引号的索引

在这里,我们还使用strip()来去除将悄悄进入的空白

此步骤获得:

>>> zz
[('one', '1'), ('two', '2')]
这几乎就是我们想要的

现在

d=dict(zz)

就这样

>>> d
{'two': '2', 'one': '1'}

请注意,dict不保留键的顺序。

对于不包含封闭对象的普通对象,这是一个基本的字符串操作问题

一旦有了复合对象,我将向您展示的代码就会失败

让我们启动Python 2.7并使用您的示例字符串:

>x='({1:1,2:2})

现在你想要的是一份口述

我们对迪克特了解多少

dict可以从(key,value)“2-ples”列表中生成,我指的是两个元素列表的列表,而不是python元组只读列表的列表

每个元组都表示一个属性,如
one:“1”

首先,我们需要将x缩减为包含所需信息的子字符串

显然,括号和方括号是多余的,因此我们可以写:

>>> left = x.find("{")
>>> right = x.find("}")
>>> y = x[left+1:right]
这里,
String.find()
方法查找搜索字符串参数的第一个索引

符号
x[n:m]
是x的第n个字符到第m-1个字符(含)的子字符串

获得:

>>> y
'one:"1", two:"2"'
>>> z
['one:"1"', ' two:"2"']
这只是一个字符串,不是一个元组,但如果我们用逗号分割,它可以成为一个元组

>>> z = y.split(",")
获得:

>>> y
'one:"1", two:"2"'
>>> z
['one:"1"', ' two:"2"']
现在,这些字符串中的每一个都代表一个属性,我们需要梳理出键和值

我们可以用一个简单的方法来实现这一点

>>> zz = [ (s[0:s.find(":")].strip(),s[s.find('"')+1:-1].strip()) for s in z]
我们再次使用
find()
获取冒号和引号的索引

在这里,我们还使用strip()来去除将悄悄进入的空白

此步骤获得:

>>> zz
[('one', '1'), ('two', '2')]
这几乎就是我们想要的

现在

d=dict(zz)

就这样

>>> d
{'two': '2', 'one': '1'}
请注意,dict不保留键的顺序。

建议使用。这确实有效,似乎是一个更好的解决方案

import demjson
demjson.decode('{one:"1", two:"2"}')
产出:

{u'two': u'2', u'one': u'1'}
建议使用。这确实有效,似乎是一个更好的解决方案

import demjson
demjson.decode('{one:"1", two:"2"}')
产出:

{u'two': u'2', u'one': u'1'}

在使用
JavaScript
时,我注意到其内置的
.toSource()
方法将编写包含引号的键字典
dict key name
,如果该字典键的名称中包含非字母字符,如空格、逗号、句点、美元符号等。例如:

示例
JavaScript

var dictVar = {'one':'1','.two':'2', 'three,':3, 'fo ur':4,"five":"five"};
mySaveFile = new File('/my/path/to/JavaDictToPython.txt');    
mySaveFile.open("w","TEXT","????");
mySaveFile.write(dictVar.toSource());
mySaveFile.close();
字典将以以下方式写入文件:

({one:"1", ".two":"2", "three,":3, "fo ur":4, five:"five"})

JavaScript
中工作时,我注意到它的内置
.toSource()
方法将编写正确括在引号中的键字典
dict key name
,如果该字典键的名称中包含非字母字符,例如