Skip to main content
 首页 » 编程设计

python之将python中的一行解析为字典的最佳方法

2025年05月04日8tintown

我有一个包含以下行的文件

account = "TEST1" Qty=100 price = 20.11 subject="some value" values="3=this, 4=that" 

没有特殊的分隔符,每个键都有一个值,如果是字符串则用双引号括起来,如果是数字则不用。没有没有值的键,尽管可能存在表示为 ""的空白字符串,并且引号没有转义字符,因为不需要它

我想知道用 python 解析这种行并将值作为键值对存储在字典中的好方法是什么

请您参考如下方法:

为此我们需要一个正则表达式。

import re, decimal 
r= re.compile('([^ =]+) *= *("[^"]*"|[^ ]*)') 
 
d= {} 
for k, v in r.findall(line): 
    if v[:1]=='"': 
        d[k]= v[1:-1] 
    else: 
        d[k]= decimal.Decimal(v) 
 
>>> d 
{'account': 'TEST1', 'subject': 'some value', 'values': '3=this, 4=that', 'price': Decimal('20.11'), 'Qty': Decimal('100.0')} 

如果您愿意,可以使用 float 而不是小数,但如果涉及到金钱,这可能不是一个好主意。