2015-02-09 172 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