使用正则表达式读取浮点矩阵

时间:2017-06-04 00:52:54

标签: python regex python-3.x

我正在尝试使用RegEx从文件中读取矩阵。该文件由几个strng,\ n characteres,空格和浮点数组成。我想读取三个或更多个连续浮点的集合。代码的例子如下:

DATA.TXT

$Nodes
5
1 0 0 0
2 1 0 0
3 1 1 0
4 0 1 0
5 0.5 0.5 0
$EndNodes
$Values
5
1 1.5 3.6
2 1.5 3.4
3 1.5 3.3
4 1.5 3.5
5 1.5 3.1
$EndValues

在我的read_file.py中,我有:

def read_file(filename):
    text = str()
    with open(filename) as file:
        lines = file.readlines()
        for line in lines:
            text += line
    return text

我的read_file函数的最终输出是一个包含整个文本的大字符串,所以我可以使用RegEx一次找到我喜欢的任何内容。 好吧,我想阅读所有三个数字的集合(在$ Nodes之后\ n5和$ EndNodes \ n之前)。

我尝试了很多东西,例如re.compile(r'\$Nodes (.*)\$EndNodes')和许多其他角色组合,但似乎没有任何效果。

我最终需要的是:

list_of_nodes = [('1', '0', '0', '0'), ('2', '1', '0', '0'), ('3', '1', '1', '0'), ('4', '0', '1', '0'), ('5', '0.5', '0.5', '0')]

任何帮助都会被贬低。提前谢谢,

1 个答案:

答案 0 :(得分:0)

你真的很亲近。您编写的正则表达式将使用re.DOTALL标志。在正则表达式中,.表示除了换行符之外的任何字符'。当您使用re.DOTALL标记时,.也会包含换行符。

Demo