从文本文件解析到图形(python)

wxm*_*562 5 python arrays parsing graph

我无法弄清楚如何在python中解析文本文件到图形中.该文件采用以下格式:

4 4 
o . o . o . o
-   -   .   -
o . o . o | o 
.   -   .   .
o | o . o . o
.   -   .   -
o . o . o . o 
Run Code Online (Sandbox Code Playgroud)

顶部的整数是尺寸(行,列).我需要考虑每个角色之间的空间.这假设代表一个迷宫,我必须运行搜索以确定给定起点和终点的最佳路径.那部分我已经想通了.我只需要帮助将此文本文件解析为图形,以便我可以运行搜索.

小智 2

该函数将像您给出的网格一样的网格解析为一组节点(在原始网格中存储为一对坐标)和一个边字典(将每个节点映射到与其相邻的节点列表) 。这是一种非常易于使用的图形表示形式,使用它来编码迷宫搜索应该不会有任何问题。该代码使用的思想是,迷宫的结构仅由边缘(- 和 |)描述,网格在水平和垂直方向上都是双线间隔的。没有边进出的正方形不会出现在图表中。

import collections

def parse_grid(grid):
    edges = collections.defaultdict(list)
    for i in xrange(len(grid)):
        for j in xrange(len(grid[i])):
            if grid[i][j] == '-':
                edges[i, j - 2].append((i, j + 2))
                edges[i, j + 2].append((i, j - 2))
            if grid[i][j] == '|':
                edges[i - 2, j].append((i + 2,j))
                edges[i + 2, j].append((i - 2,j))
    nodes = set()
    for e in edges.iterkeys():
        nodes.add(e)
    return nodes, edges

grid = """\
o . o . o . o
-   -   .   -
o . o . o | o 
.   -   .   .
o | o . o . o
.   -   .   -
o . o . o . o"""
print parse_grid(grid.split('\n'))
Run Code Online (Sandbox Code Playgroud)