我有一个像"2 2, 2 5, 3 1; 3 3, 4 4, 1 6; 1 1, 4 0;"
这样的字符串。 ;
将字符串划分为4个大块,下一个层次是,
,最后一个是空格。
我的目标是将字符串拆分为列表列表但我被卡住了。这是我的代码。
S = "2 2, 2 5, 3 1; 3 3, 4 4, 1 6; 1 1, 4 0;"
T = [elem.strip() for elem in S.split(";")]
U = []
V = []
for i in range(0,len(T)):
U.append([elem.strip() for elem in T[i].split(',')])
for i in range(0,len(U)):
for j in range(0,len(U[i])):
V.append(U[i][j].split())
print("S = ", S)
print("U = ", U)
print("V = ", V)
输出:
S = 2 2, 2 5, 3 1; 3 3, 4 4, 1 6; 1 1, 4 0;
T = ['2 2, 2 5, 3 1', '3 3, 4 4, 1 6', '1 1, 4 0', '']
U = [['2 2', '2 5', '3 1'], ['3 3', '4 4', '1 6'], ['1 1', '4 0'], ['']]
V = [['2', '2'], ['2', '5'], ['3', '1'], ['3', '3'], ['4', '4'],
['1', '6'], ['1', '1'], ['4', '0'], []]
V不是我想要的。我希望['2', '2'], ['2', '5'], ['3', '1']
包含在单独的列表中(其他列表也是如此)。
我错过了什么?
奖金问题:该字符串表示一个图表,其中由;
分隔的地点代表一个节点,由,
分隔的地方代表由邻居节点数和距离代表的邻居(由空格)
有没有更好的方法将该图存储在原始数据类型中而不构建类?
答案 0 :(得分:2)
使用嵌套理解进一步分裂:
V = [[map(int, j.split()) for j in i.split(',')] for i in s.split(';')]