将字符的随机顺序转换为JSON



我有以下格式的后续字符串的长列表(或任何您可能称之为(:

"(str10,str20,str30(,(str11,str21,str31(,(str12,str22,str32(,..."

括号内的所有字符串均以单引号为单位。

我想将整个字符串转换为JSON,将括号内的所有字符串作为值提取并为其分配特定键。由于我只知道JS和Python(而且我显然不是专业人士(,因此我试图以正则表达方式进行。但是,问题是 js不识别上述列表(或您称之为的任何列表(为字符串。手动添加逃生字符是不切实际的,因为列表为长。所以,我不知道该怎么做...

是否有一种通用方法(也许是适合的语言,某个库或STH(来搜索此类模式并提取它们?谢谢!

我的尝试

/([A-Z]{2})',s'(.+)',s'(.+)/g

示例列表

"""
('AD', 'Andorra', 'Hola'),
('AE', 'United Arab Emirates', 'Marhaba'),
('AF', 'Afghanistan', 'Senga yai'),
('AG', 'Antigua and Barbuda', 'Hello'),
('AI', 'Anguilla', 'Hello'),
('AL', 'Albania', 'Tungjatjeta'), ...
"""

预期输出

[{"key1": "AD", "key2": "Andorra", "key3": "Hola"},
  {"key1": "AE", "key2": "United Arab Emirates", "key3": "Marhaba"},
  {"key1": "AF", "key2": "Afghanistan", "key3": "Senga yai"},
  {"key1": "AG", "key2": "Antigua and Barbuda", "key3": "Hello"},
  {"key1": "AI", "key2": "Anguilla", "key3": "Hello"},
  {"key1": "AL", "key2": "Albania", "key3": "Tungjatjeta"}, ...
]

使用re.sub()和REGEX。

REGEX (s*'([^']+)'[^']+'([^']+)'[^']+'([^']+)'s*)

替代:{"key1": "1", "key2": "2", "key3": "3"}

Python代码

r = r"(s*'([^']+)'[^']+'([^']+)'[^']+'([^']+)'s*)"
sub = r'{"key1": "1", "key2": "2", "key3": "3"}'
json = "[%s]" % re.sub(r, sub, text)

输出:

[{"key1": "str10", "key2": "str20", "key3": "str30"}, {"key1": "str11", "key2": "str21", "key3": "str31"}, {"key1": "str11", "key2": "str21", "key3": "str31"}]

代码演示

最新更新