Python - 选择列表列表中的所有元素

时间:2015-02-09 14:20:13

标签: python arrays string list python-2.7

我想编写一系列代码(可能是func,loop等)来获取每个列表的每个列表的前6个字符。

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

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

它经历了11。

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

你能帮助我或给出一个想法来处理。

2 个答案:

答案 0 :(得分: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 :(得分:-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)

如果您想要对数据做更多的事情,您应该正确导入对象。