Python - 选择列表中的所有元素列表
我想编写一系列代码(可能是func,循环等),以获得每个列表的每个列表的前6个字符。Python - 选择列表中的所有元素列表
它看起来像这样: http://www.mackolik.com/AjaxHandlers/FixtureHandler.aspx?command=getMatches&id=3170&week=1
这是我的列表的第一个列表,第二可以在这里找到:周= 2。
它经过11
除此之外,我的列表中的每个列表元素区分。
你能帮我一下还是想出点办法吧。
看起来你你有一个猥琐的多层次数据的串式一览的列表结构:
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]
假设你有一个像
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)
如果您想对数据做更多的事情,那么您应该对对象进行适当的导入。
有人可以解释downvote以避免我犯的错误吗? – 2015-02-09 14:42:42
谢谢塞巴斯蒂安,我没有给这个消极的。您是否希望看到我的解决方案与您的解决方案非常相似:
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
第二可找到哪里? – reynoldsnlp 2015-02-09 14:24:20
@bepop我想这是http://www.mackolik.com/AjaxHandlers/FixtureHandler.aspx?command=getMatches&id=3170&week=2 – 2015-02-09 14:25:03
请指出你已经尝试过什么,以及你的问题在哪里 – runDOSrun 2015-02-09 14:26:01