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

我有一个看起来像这样的文本文件:

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"  

解决方法:

这是一个不太像C的解决方案,看起来更像python.在不确定输出到底应该是什么样子的情况下,首先想到的就是这种解决方案:

result = []

with open("test.txt") as f:
    lines = f.readlines()
    for l in lines:
            l = l.replace('\\', '')
            elements = l.split("&")
            elements = [x.strip() for x in elements]
            result.append((int(elements[0]), elements[1]))

print result

这是输出:

[(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')]

请注意,这缺少错误处理,因此,如果文件不符合您的格式,则可能会引发异常.

上一篇:python-使用“ genfromtxt”提取列


下一篇:是否存在与python中的非唯一集等效的数据结构?