我有一个类型列表
[("['106.52.116.101']", 1), ("['45.136.108.85']", 1)]
并希望将其转换为
[('106.52.116.101', 1), ('45.136.108.85', 1)]
答案 0 :(得分:2)
有多种解决方法,例如,您可以这样做:
lst = [("['106.52.116.101']", 1), ("['45.136.108.85']", 1)]
new = [(l[0][2:-2], l[1]) for l in lst]
print(new)
输出:
[('106.52.116.101', 1), ('45.136.108.85', 1)]
答案 1 :(得分:0)
Mateen Ulhaq 已经提出了一个非常简短且很好的解决方案。
但是,如果数组中并不总是包含一项,则可以使用以下方法:
[(eval(s)[0], n) for s, n in list]
eval()
解释python代码时,字符串在语法上必须正确。如果这些字符串是基于用户的安全性,也请pay attention。
答案 2 :(得分:0)
您可以如下使用string的split():
lst = [("['106.52.116.101']", 1), ("['45.136.108.85']", 1)]
print(lst)
new_lst = [(first.split('\'')[1], sec)for first, sec in lst]
print(new_lst)
输出
[("['106.52.116.101']", 1), ("['45.136.108.85']", 1)]
[('106.52.116.101', 1), ('45.136.108.85', 1)]
答案 3 :(得分:0)
您可以使用ast.literal_eval
:
from ast import literal_eval
l = [("['106.52.116.101']", 1), ("['45.136.108.85']", 1)]
l = [(literal_eval(f)[0], s) for f, s in l]
l
输出:
[('106.52.116.101', 1), ('45.136.108.85', 1)]