简体   繁体   English

Python-添加到字典时从列表项中删除单引号

[英]Python - Remove Single Quotes From List Items When Adding To Dictionary

I have tried all the recommendations on similar posts, but have had no luck. 我已经尝试过类似职位上的所有建议,但是没有运气。 I have a list of items that I'm using to create values for a list of dictionaries. 我有一个项目列表,可用于为字典列表创建值。 That list ultimately becomes a JSON object, so I can't have the single quotes around each list item that I add to it. 该列表最终成为JSON对象,因此我无法在添加到每个列表项的周围加上单引号。

metrics = ["test_met_1","test_met_2","test_met_3","test_met_4","test_met_5"]
data = {
    "reportDescription":{
        "reportSuiteID":"some_suite",
        "dateFrom":"yesterday",
        "dateTo":"today",
        "dateGranularity": "day",
        "metrics":[]
        }
    }

if len(metrics) > 0:
    for metric in metrics:
    new_met = "{\"id\""+":"+"\""+metric+"\"}"
    data["reportDescription"]["metrics"].append(new_met)

if len(elements) > 0:
    for element in elements:
        new_elm = "{\"id\""+":"+"\""+element+"\",\"top\""+":"+"\"50000\""+"}"
    data["reportDescription"]["elements"].append(new_elm)

log_file = open('test.JSON','a')
log_file.write('\n\n'+str(datetime.now())+'\n'+str(data))
log_file.close()

My Results: 我的结果:

{'reportDescription':'dateGranularity': 'day', 'dateTo': 'today', 'dateFrom': 'yesterday', 'metrics': ['{"id":"test_met_1"}', '{"id":"test_met_2"}', '{"id":"test_met_3"}', '{"id":"test_met_4"}', '{"id":"test_met_5"}'], 'reportSuiteID': 'some_suite'}

What I actually need: 我真正需要的是:

{"reportDescription":"dateGranularity": "day", "dateTo": "today", "dateFrom": "yesterday", "metrics": [{"id":"test_met_1"}, {"id":"test_met_2"}, {"id":"test_met_3"}, {"id":"test_met_4"}, {"id":"test_met_5"}], "reportSuiteID": "some_suite"}

Any ideas on how to remove those single quotes around each list item? 关于如何删除每个列表项周围的单引号的任何想法? I've tried a couple variations of join() and/or replace(). 我尝试了join()和/或replace()的几种变体。 No luck though. 不过没有运气。

If you want to create a JSON string (or file), use the json module. 如果要创建JSON字符串(或文件),请使用json模块。

>>> data["reportDescription"]["metrics"] = [{"id": m} for m in metrics]
>>> json.dumps(data)
'{"reportDescription": {"metrics": [{"id": "test_met_1"}, {"id": "test_met_2"}, {"id": "test_met_3"}, {"id": "test_met_4"}, {"id": "test_met_5"}], "dateFrom": "yesterday", "dateGranularity": "day", "reportSuiteID": "some_suite", "dateTo": "today"}}'

To write to file directly, use json.dump(data, log_file) . 要直接写入文件,请使用json.dump(data, log_file) The json module will take care of properly escaping strings and using the correct JSON quotes etc. json模块将负责正确转义字符串并使用正确的JSON引号等。

Once you have resultant dictionary, convert it to json object using json.dumps(yourdict) 获得结果字典后,请使用json.dumps(yourdict)将其转换为json对象

Don't forget import json 别忘了导入json

Make sure your dictionary is a good. 确保您的字典是一本好书。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM