2017-04-01 65 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)