2017-04-01 23 views
1

我很難過。在Python中分配和讀取多維數組

for a in range(0,500): #500 is a highly variable number but using it for example purposes 
    b = findall(r'<(.*?)>', d) # d will return a highly number variable number of matches could be anywhere from 45-10000 
    c.append([b]) 
print(c[0][1]) 

這會返回錯誤,因爲從'b'的所有內容都會進入c [0] [0]。我可以理解這一點。現在的問題是我怎麼拆「B」除了這樣我就可以把它轉換成C,所以我可以

print(c[0][234]) 

,並把它給我回了235,犯錯的1元234 0犯錯,行?

這是一種像我上面說的情況,其中經過'b'的次數將是可變的,至少現在,直到我得到整個文件準備好我只能在最後'b'將是在我完成所有數據收集的時候,它的數量可能會接近10,000。存儲的元素數量可能會高度不同,具體取決於它們來自哪個文件。他們都來自csv文件,但我希望不去處理增加任何'複雜'出去,不得不處理csv模塊...因爲我從來沒有用過它,這可能會只會導致更多的問題。

我已經試過類似的東西來......自然不同變量,這樣的事情會被適當地匹配起來

d = list(zip(*(e.split(',') for e in b))) 

所有這一切都沒有被分割的每一個字母與上逗號。

+0

「從'b'的所有內容都會進入c [0] [0]」 - 首先,不是。其次,你爲什麼要追加'[b]'而不是'b'? – user2357112

+0

你贏了。我曾在其他問題/答案中看到過這樣做,因爲我在回答這個問題之前試圖獲得答案。 – confused

回答

0

您的錯誤來自您在c.append([b])中的方括號。方括號創建一個包含列表b的額外列表。因此,不是二維數據結構,而是三維結尾。您的索引編制失敗,因爲c[0][1]正嘗試從中間列表中獲取第二個值(該列表中只有一個項目)。

您可以用c[0][0][1]來代替。但是你可能實際上並不想在你的數據結構中增加額外的級別。您可以避免使用以下方式創建它:c.append(b)