Python: 字符串 [ [k1:v1, k2:v2], [k3:v3] ] 到对象
Python: String [ [k1:v1, k2:v2], [k3:v3] ] to Object
我遇到了输出以下内容的应用程序
[[_type:logs, _id:AVY0ofxOHiyEPsw_vkZS, _index:firewall-all-2016.07.29, _score:13.445344], [_type:logs, _id:AVY1EI1z79siNC3TEi7P, _index:firewall-all-2016.07.29, _score:13.445344]]
我想将此文本解析为可迭代对象。但是使用 ast.literal_eval
的标准方法不喜欢输入。
在我开始研究 str replace 等之前,还有什么我可以尝试的吗...
谢谢
这个怎么样:
import re
data = "[[_type:logs, _id:AVY0ofxOHiyEPsw_vkZS, _index:firewall-all-2016.07.29, _score:13.445344], [_type:logs, _id:AVY1EI1z79siNC3TEi7P, _index:firewall-all-2016.07.29, _score:13.445344]]"
parsed_1 = re.findall("\[(.*?)\]", data[1:-1])
parsed_list = []
for line in parsed_1:
parsed_dict = {}
for record in line.split(","):
k, v = record.split(":")
parsed_dict[k] = v
parsed_list.append(parsed_dict)
print(parsed_list)
输出的是字典列表,您可以通过多种方式对其进行迭代。
我遇到了输出以下内容的应用程序
[[_type:logs, _id:AVY0ofxOHiyEPsw_vkZS, _index:firewall-all-2016.07.29, _score:13.445344], [_type:logs, _id:AVY1EI1z79siNC3TEi7P, _index:firewall-all-2016.07.29, _score:13.445344]]
我想将此文本解析为可迭代对象。但是使用 ast.literal_eval
的标准方法不喜欢输入。
在我开始研究 str replace 等之前,还有什么我可以尝试的吗...
谢谢
这个怎么样:
import re
data = "[[_type:logs, _id:AVY0ofxOHiyEPsw_vkZS, _index:firewall-all-2016.07.29, _score:13.445344], [_type:logs, _id:AVY1EI1z79siNC3TEi7P, _index:firewall-all-2016.07.29, _score:13.445344]]"
parsed_1 = re.findall("\[(.*?)\]", data[1:-1])
parsed_list = []
for line in parsed_1:
parsed_dict = {}
for record in line.split(","):
k, v = record.split(":")
parsed_dict[k] = v
parsed_list.append(parsed_dict)
print(parsed_list)
输出的是字典列表,您可以通过多种方式对其进行迭代。