繁体   English   中英

从文件复制行到列表

[英]copy lines from file to list

我需要编写一个从文件读取并将每个行作为一个单元格放入列表的函数。 我需要将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:

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

最终最佳解决方案:

如果使用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]

试一下:

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")

您可以使用cell_output = '\\n'.join(cell[n-1])构建第N个单元的输出:

print '\\n'.join(cells[0])从上方打印“输出单元格1”

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']]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM