我正在处理一份Java代码,其中一个关键数据结构是一个m x n x p
数组,float[][][]
。我需要将它转换成Python格式;目前我的方法是使用Arrays.deepToString将数组保存到文本文件中,然后从Python解析该文本文件。
我在如何编写正则表达式来解析txt文件上遇到了困难。 我可以找到所有科学记数法中的浮点数和其相关指数。 我使用以下模式进行匹配:
float_pat = r'\d\.\d*(?:E-\d+)?'
这段代码可以很好地捕获由deepToString输出的科学计数法中的浮点数。请注意,这些值都是正数,因为它们是概率。也就是说,我没有任何关于如何捕获数字本身的问题。
但是,我想做但无法做到的是使用正则表达式在左右括号中查找任意数量的浮点数。我尝试了以下方法:
list_of_floats_pat = r'\[(?:\d\.\d*(?:E-\d+)?), )+\]'
我正在尝试查找一个或多个浮点格式后跟由方括号括起来的逗号和空格。 但是它返回[]
。 不确定我的理解有什么问题。
以下是一个2x1x1数组的示例:
[[[0.6453525160688715, 0.15620941152962334, 0.1874313118193626, 9.991008092716556E-5, 9.991008092716556E-5, 9.991008092716556E-5, 9.991008092716556E-5, 0.01050721017750691, 9.991008092716556E-5], [0.5904776610141782, 0.18175460267577365, 9.991008092716556E-5, 0.22716827582448523, 9.991008092716556E-5, 9.991008092716556E-5, 9.991008092716556E-5, 9.991008092716556E-5, 9.991008092716556E-5]]]
我希望正则表达式能够返回两个匹配结果:
0.6453525160688715, 0.15620941152962334, 0.1874313118193626, 9.991008092716556E-5, 9.991008092716556E-5, 9.991008092716556E-5, 9.991008092716556E-5, 0.01050721017750691, 9.991008092716556E-5
并且
0.5904776610141782, 0.18175460267577365, 9.991008092716556E-5, 0.22716827582448523, 9.991008092716556E-5, 9.991008092716556E-5, 9.991008092716556E-5, 9.991008092716556E-5, 9.991008092716556E-5
我可以将其作为字符串使用strip和split进行解析。
我已经想出了一种解决方法,即查找所有括号索引。但我想知道我没有理解正则表达式的地方。