<p>一些格式化和写入CSV文件就足够了。我修改了它现在可以处理多个输入。。。我选择<code>"mac"</code>作为分隔键。在</p>
<pre><code>input_str = """\
"mac": "04:18:D6:96:7C:51",
"lastip": "10.1.63.143",
"tx": 130.0,
"rx": 39.0,
"signal": -46,
"distance": 450,
"signal": -44,
"hostname": "Mcdonalds kenako",
"platform": "PowerBeam M5 400",
"signal": -44,
"mac": "80:2A:A8:0E:A3:1E",
"lastip": "10.1.63.190",
"tx": 130.0,
"rx": 130.0,
"signal": -46,
"distance": 450,
"signal": -42,
"hostname": "Lear sewing PE",
"platform": "PowerBeam M5 400",
"signal": -42,
"mac": "80:2A:A8:7C:9A:C2",
"lastip": "10.1.63.189",
"tx": 130.0,
"rx": 117.0,
"signal": -62,
"distance": 4950,
"signal": -60,
"hostname": "Sandoll Consultant",
"platform": "PowerBeam M5 400",
"signal": -58,"""
input_list = [x.strip() for x in input_str.split(",\n")] # split and strip indentations
input_list = input_list[::-1] # reverse list to ignore duplicating keys later
# http://stackoverflow.com/questions/988228/convert-a-string-representation-of-a-dictionary-to-a-dictionary
import ast
input_list_of_dict = ["{" + x + "}" for x in input_list]
parsed_list_of_dict = []
list_seperator_key = "mac"
input_dict = {}
for i in range(len(input_list_of_dict)):
input_dict.update(ast.literal_eval(input_list_of_dict[i]))
if list_seperator_key in input_dict:
parsed_list_of_dict.append(input_dict)
input_dict = {}
parsed_list_of_dict = parsed_list_of_dict[::-1] # reverse list again
# writes a CSV file
header = "Station MAC,Device Name,IP Address,Signal,Distance,Tx/Rx\n"
with open("foo.csv", "w") as f:
f.write(header)
for i in range(len(parsed_list_of_dict)):
f.write(parsed_list_of_dict[i]['mac'] + ",")
f.write(parsed_list_of_dict[i]['hostname'] + ",")
f.write(parsed_list_of_dict[i]['lastip'] + ",")
f.write(str(parsed_list_of_dict[i]['signal']) + ",")
f.write(str(parsed_list_of_dict[i]['distance']) + ",")
f.write(str(parsed_list_of_dict[i]['tx']) + "/" + str(parsed_list_of_dict[i]['rx']) + "\n")
</code></pre>
<p>现在用Excel打开<code>foo.csv</code>。在</p>