我想编写一系列代码(可能是 func、循环等)来获取每个列表中每个列表的前 6 个字符。
看起来像这样: http://www.mackolik.com/AjaxHandlers/FixtureHandler.aspx?command=getMatches&id=3170&week=1
这是我的列表中的第一个列表,第二个可以在这里找到:week=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)
如果您想对数据执行更多操作,则应该正确导入到对象中。