2015-02-09 80 views
-3

我想编写一系列代码(可能是func,循环等),以获得每个列表的每个列表的前6个字符。Python - 选择列表中的所有元素列表

它看起来像这样: http://www.mackolik.com/AjaxHandlers/FixtureHandler.aspx?command=getMatches&id=3170&week=1

这是我的列表的第一个列表,第二可以在这里找到:周= 2。

它经过11

除此之外,我的列表中的每个列表元素区分。

你能帮我一下还是想出点办法吧。

+0

第二可找到哪里? – reynoldsnlp 2015-02-09 14:24:20

+0

@bepop我想这是http://www.mackolik.com/AjaxHandlers/FixtureHandler.aspx?command=getMatches&id=3170&week=2 – 2015-02-09 14:25:03

+4

请指出你已经尝试过什么,以及你的问题在哪里 – runDOSrun 2015-02-09 14:26:01

回答

2

看起来你你有一个猥琐的多层次数据的串式一览的列表结构:

data = [ 
    ["[[342212,'21/02',,'MS'], [342276,'21/02',,'MS']]"], 
    ["[[342246,'21/02',,'MS']]"] 
] 

,并要收集[342212, 342276, 342246]

要正确地做到这一点,您几乎必须将每个字符串解析为实际的数据结构;这是复杂的,因为连续的逗号(,,)不是有效的Python语法

import ast 

def fix_string(s): 
            # '[,,,]' 
    s = s.replace("[,", "[None,") # '[None,,,]' 
    s = s.replace(",,", ", None,") # '[None, None,,]' 
    s = s.replace(",,", ", None,") # '[None, None, None,]' 
    s = s.replace(",]", ", None]") # '[None, None, None, None]' 
    return s 

data = [ast.literal_eval(fix_string(s)) for row in data for s in row] 

这让我们

data = [ 
    [ 
     [342212,'21/02', None, 'MS'], 
     [342276,'21/02', None, 'MS'] 
    ], 
    [ 
     [342246,'21/02', None, 'MS'] 
    ] 
] 

,那么你可以收集值像

ids = [item[0] for batch in data for item in batch] 
-1

假设你有一个像

all_data = [['abcdef', 1213, 12.5], ['ghijkl', 'bla', 'foo', 'baz']] 
first_items = [data[0] for data in all_data] 
print(first_items) 

列表的列表。如果你拥有的一切只为一个字符串,每个子列表是由],[跳入水中,没有其他[]支架,你可以:

all_data_raw = "[[342174,'25/02','MS',1655,'Vefa',537,'Centone Karagümrük',,4,1,0,,,,,,,,,0,0,0,0,'0 - 0',0],[342265,'25/02','MS',649,'Beykozspor 1908',3,'Beşiktaş',,4,1,0,,,,,,,,,0,0,0,0,'0 - 0',0]" 
all_data = all_data_raw[2:-2].split('],[') 
first_items = [data[:6] for data in all_data] 
print(first_items) 

如果您想对数据做更多的事情,那么您应该对对象进行适当的导入。

+0

有人可以解释downvote以避免我犯的错误吗? – 2015-02-09 14:42:42

+0

谢谢塞巴斯蒂安,我没有给这个消极的。您是否希望看到我的解决方案与您的解决方案非常相似:
maclar = list(hapta中的scrape_page(y)) maclar2 = [m [0] [0] [2:-2] .replace(“] ,[“,”;“)for maclar] maclar3 = maclar2.split(';') macvektor = [d [0:6] for maclar3]
但它没有工作,因为它没有递归迭代。 – 2015-02-10 08:21:51