我有一个包含以下行的文件
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 而不是小数,但如果涉及到金钱,这可能不是一个好主意。
