簡體   English   中英

太多的值要解壓(預期 3)?

[英]too many values to unpack(expected 3)?

我正在嘗試從文本文件中加載一些數據,但不斷收到此錯誤: 在此處輸入圖像描述

def getData(file):
    f = open('N_20_T_10.txt','r')
    x, y, z = [], [], []
    f.readline()
    for line in f:
        xp, yp, zp = line.split(' ')
        x.append(float(xp))
        y.append(float(yp))
        z.append(float(zp))
    f.close()
    return x, y, z
def plotData(inputFile):
    x, y, z = getData(inputFile)
    x = pylab.array(x)
    y = pylab.array(y)
    z = pylab.array(z)
    N = np.linspace(1, 100, 100)
    r = np.sqrt(x**2 + y**2+z**2)
    mean_r = N*r
    data = np.column_stack(N)
    data1 = np.column_stack(mean_r)
    print(data, mean_r)
    #print(N, r)
    np.savetxt('new.txt', list(zip(N, mean_r)), fmt='%.1f', delimiter=",")
    pylab.plot(N, mean_r)
    pylab.xlabel('N')
    pylab.show()
plotData('N_20_T_10.txt.txt')

這是我正在使用的數據。 我認為它不斷出現可能是因為數據中有一些額外的空格,因為當我使用沒有空格的不同文件時它工作得很好。 但我不確定。 在此處輸入圖像描述

從圖片看來,第一個數字之前有一個空格。 然后你會得到split(' ')操作的 4 個元素。 請參見以下示例:

numbers = " 1 2 3"
numbers.split(' ')
# output: ['','1', '2', '3']

您可以通過跳過數組的第一個元素來解決您的問題,如下所示:

numbers.split(' ')[1:]
# output: ['1', '2', '3']

或使用strip()

numbers.strip().split(' ')
# output: ['1', '2', '3']

或者您可以簡單地使用不帶參數的split()

numbers.split()
# output: ['1', '2', '3']

因此,在您的情況下,以下代碼應該可以工作:

xp, yp, zp = line.spilt()

我會嘗試使用刪除每行開頭和結尾的所有空格

xp, yp, zp = line.strip().split(' ')

如果這是空白問題,那么您可以使用 split 解決它而不定義分隔符。 拆分文檔解釋:

如果 sep 未指定或為無,則應用不同的拆分算法:連續空白的運行被視為單個分隔符...

和例子

>>> '   1   2   3   '.split()
['1', '2', '3']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM