Python将文件读入数组,错误的值

时间:2015-04-06 04:04:01

标签: python arrays io

以下是代码,我试图逐行读取文件并相应地将值写入数组,但是,当我打印传感时,它确实包含很多元素,但是它们的值是最后一个 trimmed

sensing = []
with open("data.txt") as data:
    for line in data:        
        strline = line.strip()
        if(strline[1] =='[' ):
            trimmed[0] = int(strline[2:5])
            trimmed[1] = int(strline[7:10])
        else:
            trimmed[0] = int(strline[1:4])
            trimmed[1] = int(strline[6:9])
        **sensing.append(trimmed)**

data.txt:[592,180],[583,189],[576,197],[569,205],[560,214],[551,225],

感知:[[551,225],[551,225],[551,225],[551,225],[551,225],[551,225]]

我想要的:感知:[[592,180],[583,189],[576,197],[569,205],[560,214],[551,225]]

2 个答案:

答案 0 :(得分:0)

这里的问题几乎肯定有参考。 Python中的列表(和大多数对象)保存在引用变量中。感测中的每个列表都指向您调用已修剪的内存中的列表。当您更改修剪时,感知中的所有子列表都会更新,因为它们都指向该列表。

您需要通过循环重新定义每次迭代的修剪(使用trimmed = [None, None]),或者您可以直接将sensing[-1].append(element)sensing.append([])添加到感应列表中以添加一个新的清单。

答案 1 :(得分:0)

假设一行输入为:[592,180],[583,189],[576,197],[569,205],[560,214],[551,225]

sensing = []
with open("data.txt") as data:
    for line in data:
        sendsing = [map(int, i.split(", ")) for i in line.strip()[1:-1].split("],[")]