[英]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.