我想编写一系列代码(可能是func,loop等)来获取每个列表的每个列表的前6个字符。
看起来像这样: http://www.mackolik.com/AjaxHandlers/FixtureHandler.aspx?command=getMatches&id=3170&week=1
这是我列表的第一个列表,第二个可以在这里找到:week = 2。
它经历了11。
除此之外,我列表中的每个列表元素都有区别。
你能帮助我或给出一个想法来处理。
答案 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)
如果您想要对数据做更多的事情,您应该正确导入对象。