[英]Create a list of lists from a string in Python
我有一個看起來像這樣的字符串:
str = "[abc,7.56],[dfe,2.44],[iij,2.31]"
我希望它是一個列表列表:
ls = [["abc",7.56],["dfe",2.44],["iij",2.31]]
我嘗試使用list(str.split(","))
但隨后它在列表內部和列表之間拆分。 此外,該列表將包含六個元素(不是列表)而不是三個。 我應該如何進行?
你正在做的是解析。 這一點都不是微不足道的:很多邊緣情況等等......
您的輸入看起來確實像 JSON 的某種方言,這是一種非常知名的數據格式,可以這樣解析:
ls = json.loads('[["a", 1], ["b", 2]]')
assert ls == [["a", 1], ["b", 2]]
如果需要,不要試圖構建自己的解析器,而是看看https://tomassetti.me/parsing-in-python/中列舉的解析庫。
如果模式沒有像評論中要求的那樣發生巨大變化,則需要三個步驟:
,
import re
s = "[abc,7.56],[dfe,2.44],[iij,2.31]"
list_contents = re.findall(r"\[(.+?)\]", s) # non-greedily take what are between [..]
split_as_strings = [content.split(",") for content in list_contents]
result = [[pair[0], float(pair[1])] for pair in split_as_strings]
result
是
[['abc', 7.56], ['dfe', 2.44], ['iij', 2.31]]
和中間結果:
list_contents == ['abc,7.56', 'dfe,2.44', 'iij,2.31']
split_as_strings == [['abc', '7.56'], ['dfe', '2.44'], ['iij', '2.31']]
如果您想要列表列表,請使用append
:
listoflists = []
listoflists.append(str)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.