python-将关键字后的字符串重新提取到列表中

python-将关键字后的字符串重新提取到列表中,python,regex,Python,Regex,有一个字符串如下 string = {"name":"Peter","datetime":"2000-01-01T23:59:59Z","value":"61.77"},{...} 理想的输出是 output = [(2000-01-01T23:59:59Z, 61.77),[...],...] 现在我用的是正则表达式,这显然是错误的,因为我没有经验,在 dt = re.findall(r"datetime":.*?(Z)) 之后,我将通过数字提取日期,直到它与Z匹配。 与“价值”类似。

有一个字符串如下

string = {"name":"Peter","datetime":"2000-01-01T23:59:59Z","value":"61.77"},{...}
理想的输出是

output = [(2000-01-01T23:59:59Z, 61.77),[...],...]
现在我用的是正则表达式,这显然是错误的,因为我没有经验,在

dt = re.findall(r"datetime":.*?(Z))
之后,我将通过数字提取日期,直到它与Z匹配。 与“价值”类似。 通过压缩两个re.finall()来生成一个列表


主要的事情我不确定的是重新表达,但请随意评论任何你认为合适的地方,提前谢谢

如果这是一个包含许多类似datetime和value的字符串,那么这里有一个正则表达式可以工作:
“datetime”:(.*Z)

另一个解决方案是,如果此字符串是正确的Json字符串,则使用Json。Python有一个内置的json模块,您可以使用它


这看起来像是一个对象的一部分,一个字典。如果是这种情况,您可以循环字典的键并获得values目录。

或者您可以使用理解。一次迭代内容并过滤:

string = {"name":"Peter","datetime":"2000-01-01T23:59:59Z","value":"61.77"},{"name":"Peter2","datetime":"2000-02-01T23:59:59Z","value":"61.77"}
findDateTime = "2000-01-01T23:59:59Z"
output = [(line['datetime'], line['value']) for line in string if line['datetime'] == findDateTime]
print output

我假设您的
string
变量是字符串类型

您还可以使用
ast
模块中的
literal\u eval
,如下示例:

from ast import literal_eval

string = '{"name":"Peter","datetime":"2000-01-01T23:59:59Z","value":"61.77"},{"name":"Peter","datetime":"2000-01-01T24:59:59Z","value":"68.00"}'
output = [(i["datetime"], i["value"]) for i in literal_eval(string)]

print(output)
输出:

[('2000-01-01T23:59:59Z', '61.77'), ('2000-01-01T24:59:59Z', '68.00')]

你的意思是
string
是字符串吗?它是从json还是python字典输出的?是的,它是字符串类型
[('2000-01-01T23:59:59Z', '61.77'), ('2000-01-01T24:59:59Z', '68.00')]