2

我有以下格式的字符串:

'{comm:comm123,date: Aug 29, 2019 12:30:00 PM,value:qwert}'

我想得到这样的东西:

{
   'comm': 'comm123',
   'date': Aug 29, 2019 12:30:00 PM,   (As a date)
   'value': 'qwert'
}

我曾尝试使用 literal_eval 和 eval 但它们没有帮助。我也尝试使用 json 库,但它似乎没有任何用途。

4

2 回答 2

0

您的字符串确实不明确,但是,您可以使用re.findall

import re
d = '{comm:comm123,date: Aug 29, 2019 12:30:00 PM,value:qwert}'
new_d = re.findall('[A-Z][a-z]{2}\s\d{2},\s\d{4}\s\d{2}:\d{2}:\d{2} [APM]{2}|\w+', d)
result = {new_d[i]:new_d[i+1] for i in range(0, len(new_d), 2)}

输出:

{'comm': 'comm123', 'date': 'Aug 29, 2019 12:30:00 PM', 'value': 'qwert'}
于 2019-09-10T12:27:28.503 回答
-1

可怕。这些键似乎应该是明确的——如果你知道它们总是 alpha-only 可以使用类似的东西提取它们([a-zA-Z]+):,然后用它来获取字符串的“其他”位,这些位必须是值?

于 2020-02-25T13:42:10.457 回答