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

问题描述 投票:0回答:2

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

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

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

经历了11。

除此之外,我的列表中的每个列表元素都是不同的。

你能帮我或给我一个处理的想法吗?

python arrays string list python-2.7
2个回答
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)

如果您想对数据执行更多操作,则应该正确导入到对象中。

© www.soinside.com 2019 - 2024. All rights reserved.