从文件中复制“级别”

时间:2012-12-26 20:55:08

标签: python

我需要编写一个读取文件的函数,并在一个单元格中放入游戏的每个级别列表。 每个单元格包含级别的行作为字符串,每行都是单元格的元素。 最后一个单元格应该没有在级别之前出现的数字或单词,并且没有“\ n”或空单元格。 我实现了这个功能,但是对于看起来像这样的级别它不能很好地工作。 有些人有任何想法吗?

来自文件的

级别

; 1

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

作为列表中的单元格:

['####', '# .#', '#  ###', '#*@  #', '#  $ #', '#  ###', '####']

我遇到问题的关卡示例:

; 154 'Take the long way home.'

 ############################
 #                          #
 # ######################## #
 # #                      # #
 # # #################### # #
 # # #                  # # #
 # # # ################ # # #
 # # # #              # # # #
 # # # # ############ # # # #
 # # # # #            # # # #
 # # # # # ############ # # #
 # # # # #              # # #
 # # # # ################ # #
 # # # #                  # #
##$# # #################### #
#. @ #                      #
#############################
看起来像这样:

["54 'Take the long way home.'", '', ' ############################', ' #                          #', ' # ######################## #', ' # #                      # #', ' # # #################### # #', ' # # #                  # # #', ' # # # ################ # # #', ' # # # #              # # # #', ' # # # # ############ # # # #', ' # # # # #            # # # #', ' # # # # # ############ # # #', ' # # # # #              # # #', ' # # # # ################ # #', ' # # # #                  # #', '##$# # #################### #', '#. @ #                      #', '#############################']

我的代码:

def loader(filename):

    tmp=[]
    levels=[]
    f=open(filename, "r")
    f=f.read().split(';')
    for line in f:
        tmp.append(line[2:].strip())
    tmp.remove("")
    for i in tmp:
        i=i.split("\n")
        levels.append(i)
    print levels

2 个答案:

答案 0 :(得分:0)

有点难以完全遵循你想要完成的事情,但我认为这个功能会给你你想要的东西。

def loader(filename):
    f = open(filename, 'r')
    lines = f.read().split('\n')
    header = lines[0] # don't know if you need this
    level = lines[2:]
    f.close()
    return level

编辑: 哦,我没有意识到每个文件有多个级别。

那么:

def loader(filename):
    f = open(filename, 'r')
    levels = f.read().split(';')[1:]
    return [level.strip().split('\n')[2:] for level in levels]

答案 1 :(得分:0)

def loader(filename):

    tmp=[]
    levels=[]
    f=open(filename, "r")
    f=f.read().split(';')
    for i in f[1:]:
        i=i.split("\n")
        levels.append(i[2:-1])
    print levels

对我来说很好:

testinput.txt:

; 1

####
# .#
#  ###
#*@  #
#  $ #
#  ###
####
; 154 'Take the long way home.'

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

输出:

[['####', '# .#', '#  ###', '#*@  #', '#  $ #', '#  ###', '####'], [' ############################', ' #                          #', ' # ######################## #', ' # #                      # #', ' # # #################### # #', ' # # #                  # # #', ' # # # ################ # # #', ' # # # #              # # # #', ' # # # # ############ # # # #', ' # # # # #            # # # #', ' # # # # # ############ # # #', ' # # # # #              # # #', ' # # # # ################ # #', ' # # # #                  # #', '##$# # #################### #', '#. @ #                      #', '#############################']]