2016-12-04 64 views
-1

有一個字符串作爲跟隨蟒蛇 - RE關鍵字後提取的字符串到列表

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. 與「value」相似。 通過壓縮兩個r​​e.finall()來製作一個列表。

results = zip(dt, value) 

最主要的IM不能確定是重新表述,但提前隨時在任何地方您認爲合適的評論,謝謝!

+0

你的意思'string'是一個字符串? –

+0

它是從json或python字典輸出嗎? –

+0

是的,它是一個字符串類型 –

回答

1

我假設你的string變量是一個字符串類型。

您還可以使用literal_evalast模塊,像這樣的例子:

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')] 
0

如果這是一個包含許多這種日期時間和值的字符串,下面是一個正常表達式:"datetime":(.*?Z)

另一種解決方案是使用Json,如果這個字符串是一個合適的Json字符串。 Python有一個可以使用的內置json模塊。

這看起來像一個對象的一部分,雖然,字典。如果是這種情況,您可以遍歷字典的鍵並獲取values目錄。

0

或者你可以使用理解。遍歷內容和一次過濾:

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