我有这段文字:
(empty line)
(empty line)
7 -1 -2
2 -2
(empty line)
-6 2 -5 8
(empty line)
(empty line)
(3, 2), (6,4),
(2,8), (3,4), (0,6),
(6,6), (7,2)
(empty line)
(empty line)
偶尔会有空行。
我写的是
with open(txt,encoding='utf8')as f:
text = f.read().strip()
t = [i.replace(" ", "") for i in text.splitlines() ]
它给了我
['7-1-2', '2-2', '', '-62-58', '', '', '(3,2),(6,4),', '(2,8),(3,4),(0,6),', '(6,6),(7,2)']
我想分配给3个不同的变量:
d1 = [7,-1,-2,2,-2]
d2 = [-6,2,-5,8]
sets = [(3,2),(6,4),(2,8),(3,4),(0,6),(6,6),(7,2)]
答案 0 :(得分:2)
添加到@DocDriven做的事情:
with open('testt.txt',encoding='utf8')as f:
text = f.read().strip()
t = [i.split(" ") for i in text.splitlines() if len(i)>0 ]
def findTuple(input):
input = "".join(["".join(i) for i in input])
pairs = input.replace("),","|").replace("(","").replace(")","").split("|")
tuples=[]
for pair in pairs:
tuples.append(tuple(map(int,pair.split(","))))
return tuples
d1 = [list(map(int,i)) for i in t[:2]]
d2 = [int(i) for i in t[2]]
sets = findTuple(t[3:])
将导致:
d1= [[7, -1, -2], [2, -2]]
d2= [-6, 2, -5, 8]
sets= [(3, 2), (6, 4), (2, 8), (3, 4), (0, 6), (6, 6), (7, 2)]
答案 1 :(得分:1)
这不是最简洁的解决方案,但是由于它是动态的,因此具有灵活性,可以轻松更改以处理新的和/或附加的数据。
# (Already exists)
t = ['7-1-2', '2-2', '', '-62-58', '', '', '(3,2),(6,4),', '(2,8),(3,4),(0,6),', '(6,6),(7,2)']
# ----------------
dataCount = 3 # adjust this according to how many groups of data are expected (if known)
values = ['' for _ in range(dataCount)]
i = 0
for e in lst:
values[i] = values[i] + e # append the new data to the element
if e == "" and values[i] != "": # advance to new element but ignore repeat "nulls"
i = i + 1
# various ways of displaying the data:
print (values)
for e in values:
print (e)
print (values[0], values[1], values[2])
输出:
['7-1-22-2', '-62-58', '(3,2),(6,4),(2,8),(3,4),(0,6),(6,6),(7,2)']
7-1-22-2
-62-58
(3,2),(6,4),(2,8),(3,4),(0,6),(6,6),(7,2)
7-1-22-2 -62-58 (3,2),(6,4),(2,8),(3,4),(0,6),(6,6),(7,2)
我将每组数据分配给自己的列表元素,而不是单独的变量。
答案 2 :(得分:0)
尝试一下(注意所有变量都是字符串,而不是集合列表):
d1 = "".join(t[:2])
d2 = t[3]
sets = "".join(t[6:])
答案 3 :(得分:0)
感谢大家对我的帮助,非常感谢@Ctrl S,我解决了问题。
10.0.2.15:8080
要将集合转换为元组,我只使用了eval()。