首页 > 解决方案 > 从 .txt 文件存储到列表计划中

问题描述

下面的第一部分通过按周分隔来完成我想要的工作,但当我尝试将它存储在迭代的时间表列表中时,

这是我的代码:

schedule_file = open("sch2019.txt", "r")
schedule_list = schedule_file.readlines()
for x in schedule_list:

这是代码的输出:

week   1 : { ('LAR','CP'), ('KCC','JJ'), ('NYG','DC'), ('BB','NYJ'), ('CIN','SS'),  ('DB','OR'),  ('WR','PE'), ('GBP','CB'),  ('AF','MV'), ('PS','NEP'), ('HT','NOS'), ('IC','LAC'), ('TT','CLV'), ('SF','TBB'),  ('DL','AC'),  ('BR','MD') }

week   2 : {  ('SS','PS'), ('BB','NYG'),  ('DC','WR'), ('SF','CIN'),  ('IC','TT'),  ('JJ','HT'),  ('PE','AF'), ('KCC','OR'), ('LAC','DL'),  ('CB','DB'),  ('AC','BR'),('NOS','LAR'), ('TBB','CP'), ('NEP','MD'), ('MV','GBP'),('CLV','NYJ') }

week   3 : {('NYJ','NEP'),  ('PS','SF'), ('HT','LAC'),('NYG','TBB'), ('NOS','SS'),  ('DL','PE'),  ('OR','MV'), ('DB','GBP'),('LAR','CLV'),  ('CB','WR'),  ('CP','AC'),  ('MD','DC'), ('BR','KCC'), ('CIN','BB'),  ('AF','IC'),  ('TT','JJ') }

week   4 : {  ('TT','AF'),  ('SS','AC'), ('CIN','PS'), ('NEP','BB'), ('CLV','BR'),  ('OR','IC'),('TBB','LAR'),  ('MV','CB'),  ('CP','HT'), ('LAC','MD'), ('KCC','DL'),  ('JJ','DB'), ('DC','NOS'), ('WR','NYG'), ('PE','GBP') }

我想将每周存储到一个列表中,但我不知道如何处理它。

我尝试做的是

schedule_file = open("sch2019.txt", "r")
schedule_list = schedule_file.readlines()
schedule = []
for x in schedule_list:
    for i in x:
        schedule.append(i)
        print (schedule)

但它所做的只是进一步分离它。我如何将列表分成迭代以进行计划?

我希望它是什么样的:

Schedule[1]← {(LAR,CP), (KCC,JJ), (NYG,DC), (BB,NYJ), (CIN,SS), (DB,OR), (WR,PE),(GBP,CB), (AF,MV), (PS,NEP), (HT,NOS), (IC,LAC), (TT,CLV), (SF,TBB), (DL,AC),(BR,MD)}

Schedule[2]←{(SS,PS), (BB,NYG), (DC,WR), (SF,CIN), (IC,TT), (JJ,HT), (PE,AF), (KCC,OR),(LAC,DL), (CB,DB), (AC,BR), (NOS,LAR), (TBB,CP), (NEP,MD), (MV,GBP), (CLV,NYJ)}

其中 schedule[i] 的每次迭代都包含来自文本文件中相应周信息的值

标签: python

解决方案


我认为这就是您所追求的,在这里工作 Repl.it 。

这会将每一行解析为一个灯具列表(假设我的输入文本文件格式正确)。然后将其存储在Dict以周数为键的 a 中。

import re

with open('schedule.txt') as f:
  schedule = f.readlines()

def line_parser(line):
  p = re.compile("'[A-Z]{2,3}','[A-Z]{2,3}'")
  fixtures = []
  for match in p.findall(line):
    fixtures.append(match)
  return fixtures

schedule_list = {}
for week, line in enumerate(schedule):
  schedule_list[week] = line_parser(line)

# Print the 10th fixture in week 3:
print(schedule_list[3][9])

# Output: 'LAC','MD'

我想您可以通过将每个灯具拆分为存储为字典的 home/away 字符串来进一步分解这一点,但我不确定您期望什么输出格式?

import re

with open('schedule.txt') as f:
  schedule = f.readlines()

def line_parser(line):
  p = re.compile("[A-Z]{2,3}','[A-Z]{2,3}")
  fixtures = []
  for match in p.findall(line):
    sides = match.split("','")
    fixtures.append({
      "home": sides[0],
      "away": sides[1]
    })
  return fixtures

schedule_list = {}
for week, line in enumerate(schedule):
  schedule_list[week] = line_parser(line)

# Print the 10th fixture in week 3:
print(schedule_list[3][9])

# Output: {'home': 'LAC', 'away': 'MD'}

推荐阅读