Python 将随机字符序列转换为JSON
我有一个很长的列表(或者你可以称之为其他名称),其中包含以下格式的后续字符串: “(str10,str20,str30),(str11,str21,str31),(str12,str22,str32),…” 括号内的所有字符串都在单引号中 我想将整个字符串转换为JSON,将括号内的所有字符串提取为值,并为它们指定一个键。因为我只知道JS和Python(我显然不是专业人士),所以我尝试用正则表达式来实现它。然而,问题是JS不能将上面的列表(或者你可以称之为什么)识别为字符串。手动添加转义字符是不可行的,因为列表太长。所以,我不知道怎么做 有没有一种通用的方法(可能是合适的语言、特定的库或其他)来搜索和提取这些模式?谢谢 我的尝试Python 将随机字符序列转换为JSON,python,json,regex,string,Python,Json,Regex,String,我有一个很长的列表(或者你可以称之为其他名称),其中包含以下格式的后续字符串: “(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')