2014-04-03 54 views
2

按照解決迷宮問題的說明,我需要從文件中讀取數據,然後將其轉換爲矩陣。一旦完成,我需要用-1代替每個「#」(表示一個牆),用0代替每個「」(代表一個走廊),用-2代替每個「M」(代表一個牛頭怪)。我已經設法將文件轉換爲矩陣,但後半部分關於替換我遇到問題。將文件轉換爲矩陣,用Python中的數字替換每個字符

我是一名初學者,現在只學習了幾個月的python(因此爲什麼我的後面的代碼可能很難閱讀)。非常感謝您的幫助!

讀取該文件包含以下內容:

########### 
     # # # 
# ### # # # 
# # # # # 
# ##### # # 
#  # # 
# ####### # 
# #  # 
# ####### # 
#   
########### 

這裏是我的代碼:

def loadmaze(filename): 
    f = open(filename) 
    lines = f.readlines() 
    COR = "0" 
    WALL = "-1" 
    MINO = "2" 
    new_maze = [] 
    for i in range(len(lines)): 
     lines[i] = "*" + lines[i] 
     lines[i] = lines[i].strip("*").strip("\n") 
     new_maze.append(lines[i]) 
    x = new_maze 
    con_maze = [] 
    for i in range(len(x)): 
     z = list(x[i]) 
     con_maze.append(z) 
    for i in range(len(con_maze)): 
     for j in range(len(con_maze[i])): 
      con_maze[i][j].replace("'#'", COR) 
      con_maze[i][j].replace(" ", WALL) 
      con_maze[i][j].replace("M", MINO) 

    return con_maze 

print loadmaze("maze.txt") 
+0

歡迎SO。如果下面的答案之一解決了您的問題,您應該接受它(點擊相應答案旁邊的複選標記)。這有兩件事。它可以讓每個人都知道你的問題已經得到解決,並且可以幫助你獲得幫助。請參閱[此處](http://meta.stackexchange.com/a/5235/187716)以獲取完整說明。 –

+0

我已經回到了原來的形式;請不要破壞自己的問題,因爲這會破壞問題和答案可能對其他人的任何(邊際)效用。 – DSM

回答

0
import re 
from pprint import pprint 

def loadmaze(filename): 

    maze = [] 

    with open(filename) as f: 
     for line in f: 
      with_delimiters = '' 
      for i,ch in enumerate(line): 
       with_delimiters += 'S' + ch 
      line = with_delimiters 

      inchars = '# M' 
      outchars = ['-1','0','-2'] 
      for i,ch in enumerate(inchars): 
       line = line.replace(ch,outchars[i]) 
       line = line.replace('\n','') 

      maze_col = line.split('S') 
      for i in maze_col: 
       if i == '': 
        maze_col.remove(i) 
      maze.append(map(int,maze_col)) 

    return maze 


pprint (loadmaze('maze.txt')) 

輸出:

[[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], 
[0, 0, 0, 0, 0, 0, -1, 0, -1, 0, -1], 
[-1, 0, -1, -1, -1, 0, -1, 0, -1, 0, -1], 
[-1, 0, -1, 0, 0, 0, -1, 0, -1, 0, -1], 
[-1, 0, -1, -1, -1, -1, -1, 0, -1, 0, -1], 
[-1, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1], 
[-1, 0, -1, -1, -1, -1, -1, -1, -1, 0, -1], 
[-1, 0, -1, 0, 0, 0, 0, 0, 0, 0, -1], 
[-1, 0, -1, -1, -1, -1, -1, -1, -1, 0, -1], 
[-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]] 
相關問題