簡體   English   中英

如何將數字字符串轉換為 python 中的嵌套列表

[英]How to turn strings of numbers into nested lists in python

我需要將包含數字字符串的列表轉換為嵌套列表,每個字符串中的數字分隔成可以迭代的單個整數。 目前,我的代碼如下所示:

l = [
    "400000,2003,2022,83,80,51,42",
    "400001,2001,2023,61,46,90,75",
    "400002,2003,2022,75,100,90",
    "400003,2001,2021,74,54,76,92",
    "400004,2000,2022,55,71,75,83",
    "400005,2000,2023,84,85,78,50",
    "400006,1999,2022,45,68,52,85",
]
new = str(l[1])
print(new)
new.split(",")
print(new)

output 看起來完全一樣,所以 .split 在這里似乎不起作用。 我需要它看起來像下面這樣,我可以在其中調用 l[0][1] 並將 2003 作為 int 獲取。 請不要使用 pandas 或其他導入庫,謝謝!

400000, 2003, 2022, 83, 80, 51, 42,
400001, 2001, 2023, 61, 46, 90, 75,

正如您所說,您可以拆分每一行並將字符串轉換為整數。

為此,您可以使用一個簡單的理解列表:

matrix = [list(map(int, line.split(","))) for line in l]

結果將是:

[[400000, 2003, 2022, 83, 80, 51, 42],
 [400001, 2001, 2023, 61, 46, 90, 75],
 [400002, 2003, 2022, 75, 100, 90],
 [400003, 2001, 2021, 74, 54, 76, 92],
 [400004, 2000, 2022, 55, 71, 75, 83],
 [400005, 2000, 2023, 84, 85, 78, 50],
 [400006, 1999, 2022, 45, 68, 52, 85]]

這個理解列表可以轉換為經典for循環,如下所示:

matrix = []
for line in l:
    matrix.append(list(map(int, line.split(","))))
l = [eval(s) for s in l]
print(l)

Output:

C:\tmp>python x.py
[(400000, 2003, 2022, 83, 80, 51, 42), (400001, 2001, 2023, 61, 46, 90, 75), (400002, 2003, 2022, 75, 100, 90), (400003, 2001, 2021, 74, 54, 76, 92), (400004, 2000, 2022, 55, 71, 75, 83), (400005, 2000, 2023, 84, 85, 78, 50), (400006, 1999, 2022, 45, 68, 52, 85)]

您需要分配new.split(',')一個值。 這將解決它:

new_list = [a.split(',') for a in l]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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