【问题标题】:Remove a Character From a Dictionary with Python使用 Python 从字典中删除一个字符
【发布时间】:2021-10-01 09:48:44
【问题描述】:

我目前有一个 .txt 文件,其中包含以下内容...

"serial": 1300008948, "material": 649010, "siteID": 23, "locCode": 2136276, "timestamp": 2021/09/29T14:05:16

这个文件中也可以有多行,它们的格式都相同。

我从 txt 文件中取出上面的文本并将其放入字典中,但我的输出如下...

{'serial': '1300008948, "material": 649010, "siteID": 23, "locCode": 2136276, "timestamp": 2021/09/29T14:05:16'}

我的代码是在输出的开头和结尾添加字符 '。

如果可能,我想删除 '?

我的代码在下面...

filename = 'offline_q.txt'
dict1 = {}
tag = "serial"
with open(filename) as f:
     for line in f:
     key, desc = line.strip().split(None, 1)
     dict1[tag] = desc.strip()
     print(dict1)
     x = requests.put(send_data_url, headers=headers, json=dict1)
     print(x)

【问题讨论】:

    标签: json python-3.x dictionary


    【解决方案1】:

    您可以在每一行上使用eval()ast.literal_eval(),但是时间戳(2021/09/29T14:05:16)是一个问题,因为它没有用引号括起来。相反,您可以进行一些解析以将其转换为对象。

    filename = 'offline_q.txt'
    dict1 = {}
    tag = "serial"
    import ast
    from dateutil import parser
    def detect_type(x):
        try:
            return ast.literal_eval(x)
            # Caused by the date
        except SyntaxError: 
            return parser.parse(x)
            
    
    with open(filename) as f:
        for line in f:
        raw = line.strip()
        processed = [i.replace('"',"") for i in raw.split(", ")]
        final_dict = {}
        for i in processed:
            x = i.split(": ")
            final_dict[x[0]] = detect_type(x[1])
    

    【讨论】:

    • 谢谢,这很好用,除了我需要保持文本文件中的时间和日期格式
    • 然后你可以删除parser.parse(x),而只做return x。也请选择它作为答案,以便对未来的人们有所帮助。
    • 现在效果很好,谢谢!
    猜你喜欢
    • 2013-02-19
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    相关资源
    最近更新 更多