簡體   English   中英

從 Python 中的字符串創建列表列表

[英]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/中列舉的解析庫。

如果模式沒有像評論中要求的那樣發生巨大變化,則需要三個步驟:

  1. 通過正則表達式查找每個列表的內容
  2. 拆分內容,
  3. 將第二個元素轉換為數字
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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM