Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.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/4/json/13.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
Python 将随机字符序列转换为JSON_Python_Json_Regex_String - Fatal编程技术网

Python 将随机字符序列转换为JSON

Python 将随机字符序列转换为JSON,python,json,regex,string,Python,Json,Regex,String,我有一个很长的列表(或者你可以称之为其他名称),其中包含以下格式的后续字符串: “(str10,str20,str30),(str11,str21,str31),(str12,str22,str32),…” 括号内的所有字符串都在单引号中 我想将整个字符串转换为JSON,将括号内的所有字符串提取为值,并为它们指定一个键。因为我只知道JS和Python(我显然不是专业人士),所以我尝试用正则表达式来实现它。然而,问题是JS不能将上面的列表(或者你可以称之为什么)识别为字符串。手动添加转义字符是不可

我有一个很长的列表(或者你可以称之为其他名称),其中包含以下格式的后续字符串:

“(str10,str20,str30),(str11,str21,str31),(str12,str22,str32),…”

括号内的所有字符串都在单引号中

我想将整个字符串转换为JSON,将括号内的所有字符串提取为值,并为它们指定一个键。因为我只知道JS和Python(我显然不是专业人士),所以我尝试用正则表达式来实现它。然而,问题是JS不能将上面的列表(或者你可以称之为什么)识别为字符串。手动添加转义字符是不可行的,因为列表太长。所以,我不知道怎么做

有没有一种通用的方法(可能是合适的语言、特定的库或其他)来搜索和提取这些模式?谢谢

我的尝试

/([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"}, ...
]
示例列表

/([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"}, ...
]
预期产出

/([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

正则表达式

替换:
{“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"}]

你能按“),”拆分吗?(,你会得到一个组合字符串“str10,str20,str30”的数组。此外,你可以用“,”再次拆分它,使str10,str20和str30分开。假设模式在整个文档中都是相同的预期结果。@S.Jovan预期结果应该是这样的:[{“key1”:str10,“key2”:str20,“key3”:str30},{“key1”:str11,“key2”:str21,“key3”:str31},{“key1”:str12,“key2”:str22,“key3”:str32},…]@KendrickKesley该文档太长,无法手动拆分。是否有方法自动执行此操作?@S.Jovan在js语法中此正则表达式
/([a-Z]{2})'、\S'(.+)、\S'(.+)/g
查找所有事件并对其进行适当分组。例如,'VA','Holy See(梵蒂冈城邦)'Buon giorno')