gpt4 book ai didi

python - 从文件到列表中元组的字符串

转载 作者:行者123 更新时间:2023-11-28 16:33:14 24 4
gpt4 key购买 nike

我有一个如下所示的文本文件:

3 & 221/73 \\\  
4 & 963/73 \\\
5 & 732/65 \\\
6 & 1106/59 \\\
7 & 647/29 \\\
8 & 1747/49 \\\
9 & 1923/49 \\\
10 & 1601/41 \\\
6 & 512 \\\

我想将数字对加载到列表或字典中。

这是我目前的代码:

L = []
data1 = data.replace (" \\\\", " ")
data2 = data1.replace(" & "," ")
i=0
a=''
b=''
while data2[i] != None:
if(a==''):
while( data2[i] != '' ):
a=a+data2[i]
i = i + 1
while(data2[i] !=''):
b=b+data2[i]
i = i + 1
L.append((int(a),int(b)))
a=''
b=''
i=i+1

但这是我得到的错误:

"while( data2[i] != '' ):  string out of range"  

最佳答案

你几乎拥有它,比如 @Vor提到,你的条件语句是问题所在。 Python 中的文本文件不以 None 结尾,因此您不能执行 data2[i] != ''data2[i] != None:

with open("data.txt") as f:
L=[]
for line in f:
line=line.replace(" \\\\\\", "").strip() #Replace \\\ and strip newlines
a,b=line.split(' & ') #Split the 2 numbers
L.append((int(a),b)) #Append as a tuple

此方法将输出您要求的元组列表:

>>> L
[(3, '221/73'), (4, '963/73'), (5, '732/65'), (6, '1106/59'), (7, '647/29'), (8, '1747/49'), (9, '1923/49'), (10, '1601/41'), (6, '512')]

注意:在倒数第 3 行中,当您附加到 L 时,您在 b< 上使用了 int()/变量。由于字符串的形式为 '221/73',因此它不是有效的整数。您可以拆分字符串和 int() 每个单独的数字,但随后它会拆分数字,这可能不是您想要的。

关于python - 从文件到列表中元组的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29730239/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com