0

ファイルから読み取り、いくつかの行ごとに1つのセルとしてリストに入れる関数を作成する必要があります。1から2の間、および2から最後までの行をコピーして、番号と空の行を含む行なしで、リストの異なるセルにそれぞれを配置する必要があります。私はそれがどのように機能するのか分かりません。

ファイル:

; 1

####
# .#
#  ###
#*@  #
#  $ #
#  ###
####

; 2

######
#    #
# #@ #
# $* #
# .* #
#    #
######

私のコード:

def loader(filename):
    levels=[[]]
    f=open(filename, "r")
    x=[]
    for line in f:
        if ";" not in line:
            x.append(line)
        else:
            levels.append(x)
    f.close()
    return levels

出力:セル1:

####
# .#
#  ###
#*@  #
#  $ #
#  ###
####

セル2:

######
#    #
# #@ #
# $* #
# .* #
#    #
######
4

3 に答える 3

3

最終的な最善の解決策:

を使用するreと、から何でも見つけることができます

; 1

; 2

コードは次のとおりです。

import re
levels = [x[2:].strip() for x in re.split(';\s*\d', open(filename).read()) if x != '']

古い:(数値を補正し、空白行を完全に削除します)

levels = [x[2:].strip() for x in open(filename).read().split(';') if x != '']

また

levels = [x[1:].strip() for x in open(filename).read().split('; ') if x.strip() != '']

出力を印刷するには:

for level in levels:
    print level

または個別に:

print levels[0]
print levels[1]
于 2012-12-18T20:19:08.467 に答える
2

これを試してみてください:

def loader(filename):
  levels,x = [],[]
  for line in open(filename,'r'):
    line = line.strip('\n').strip()

    # Skip blank lines
    if line == '':
      continue

    # Assuming that lines containing ';' mark a new cell, so save the old cell
    if ';' in line:
      if x != []:
        levels.append(x)
      x = []

    # If the line doesn't contain ';', it is part of the current cell
    else:
      x.append(line)

  # Save the last cell, if there was one
  if x != []:
    levels.append(x)
  return levels


cells = loader("testfile")

N番目のセルの出力は次のように作成できますcell_output = '\n'.join(cell[n-1])

print '\n'.join(cells[0])「出力セル1」を上から印刷します

于 2012-12-18T20:19:13.477 に答える
2
from itertools import groupby as gb

with open(file,'r') as f:
   [list(g) for k,g in gb(f.readlines(),lambda x:';'in x or x=='\n') if not k]

外:

[[u'####\n',
  u'# .#\n',
  u'#  ###\n',
  u'#*@  #\n',
  u'#  $ #\n',
  u'#  ###\n',
  u'####\n'],
 [u'######\n',
  u'#    #\n',
  u'# #@ #\n',
  u'# $* #\n',
  u'# .* #\n',
  u'#    #\n',
  u'######\n']]
于 2012-12-18T20:38:54.157 に答える