从python中的文件读取时删除空格和逗号

时间:2018-05-04 15:19:02

标签: python regex graph-theory

我必须从具有以下结构的文件构建图形:

1   80,982  163,8164    170,2620    145,648 200,8021    173,2069

第一个数字是顶点(1),80是具有权重982的相邻顶点。我想从空格和逗号中删除该行。

我尝试使用strip()split(','),但我无法找到合适的格式来构建我的图表。

2 个答案:

答案 0 :(得分:4)

您可以使用正则表达式轻松处理您的任务,如下所示:

>>> import re
>>> s = "1 80,982 163,8164 170,2620 145,648 200,8021 173,2069"
>>> re.findall(r'(\d+) (\d+),(\d+)', s) # pass your file content s as string
[('1', '80', '982'), ('8164', '170', '2620'), ('648', '200', '8021')]

说明:

findall - 返回所有匹配模式的列表

\d+ - 匹配一个或多个数字

答案 1 :(得分:1)

如果我正确理解了数据的结构,每行包含一个顶点及其相邻顶点和权重对,则可以通过仅使用split执行此操作,如下所示:

lines = "1 80,982 163,8164 170,2620 145,648 200,8021 173,2069"
graph = {}
for line in lines.split('\n'):
    vertex, *neighbors = line.split()
    graph[vertex] = [tuple(neighbor.split(','))
                     for neighbor in neighbors]

结果是一个字典,其中包含顶点作为键,以及相邻顶点列表 - 权重元组作为值。