簡體   English   中英

在Python中將一串元組轉換為一串元組

[英]Converting a string of tuples to a list of tuples in Python

如何將"[(5, 2), (1,3), (4,5)]"轉換為元組列表[(5, 2), (1,3), (4,5)] 5,2 [(5, 2), (1,3), (4,5)]

我正在使用不支持"import ast" planetlab shell。 所以我無法使用它。

如果ast.literal_eval不可用,則可以使用(unsafe!) eval

>>> s = "[(5, 2), (1,3), (4,5)]"
>>> eval(s)
[(5, 2), (1, 3), (4, 5)]

但是,您應該真正考慮一下序列化格式。 如果要在Python應用程序之間傳輸數據,並且需要元組和列表之間的區別,請使用pickle 否則,請使用JSON

如果您對字符串源的信任度不足以使用eval ,請使用re

import re
tuple_rx = re.compile("\((\d+),\s*(\d+)\)")
result = []
for match in tuple_rx.finditer("[(5, 2), (1,3), (4,5)]"):
  result.append((int(match.group(1)), int(match.group(2))))

上面的代碼非常簡單,僅適用於2元組的整數。 如果要解析更復雜的結構,最好使用適當的解析器。

'join'替換后面的字符'()[]',並創建由逗號分隔的數字字符串

5,2,1,3,4,5

'split'將字符串拆分為','並創建列表字符串

['5','2','1','3','4','5']

'iter'創建迭代器,該迭代器將遍歷元素列表

最后一行使用列表推導,使用“ zip”將兩個數字組合在一起

it = iter("".join(c for c in data if c not in "()[] ").split(","))
result = [(int(x), int(y)) for x, y in zip(it, it)]

>>> [(5, 2), (1, 3), (4, 5)]

暫無
暫無

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

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