我正在读取包含下一个文件:
//some text
Integral of Qr over area magnitude of patch B1_TE16_B1_TE4[0] = -1073.40295735
//some more text
Integral of Qr over area magnitude of patch B1_TE16_B1_TE11[1] = 1099.13456362
//some more text
Integral of Qr over area magnitude of patch B1_TE16_B1_TE13[2] = 1025.13456362
我使用re.findall('Integral of Qr over area magnitude of patch ([\w\.-]+)')
,并且能够找到没有索引号的所有三个名称'B1_TE16...'
。
现在,我要实现的是下一个输出:
[('B1_TE16_B1_TE4[0]', '-1073.40295735'), ('B1_TE16_B1_TE11[1]', '1099.13456362'), ('B1_TE16_B1_TE13[2]', '1025.13456362')]
关于如何实现这一目标的任何提示?
答案 0 :(得分:1)
您可以使用
r'Integral of Qr over area magnitude of patch ([\w.-]+\[\d+])\s*=\s*(-?\d*\.?\d+)'
请参见regex demo
详细信息
([\w.-]+\[\d+])
-第1组:一个或多个单词.
或-
字符,[
,1个或多个数字,然后是]
\s*=\s*
-一个=
包含0+空格(-?\d*\.?\d+)
-第2组:一个可选的-
,0+个数字,一个可选的.
和1+个数字import re
s = """//some text
Integral of Qr over area magnitude of patch B1_TE16_B1_TE4[0] = -1073.40295735
//some more text
Integral of Qr over area magnitude of patch B1_TE16_B1_TE11[1] = 1099.13456362
//some more text
Integral of Qr over area magnitude of patch B1_TE16_B1_TE13[2] = 1025.13456362"""
rx = r'Integral of Qr over area magnitude of patch ([\w.-]+\[\d+])\s*=\s*(-?\d*\.?\d+)'
print(re.findall(rx, s))
# => [('B1_TE16_B1_TE4[0]', '-1073.40295735'), ('B1_TE16_B1_TE11[1]', '1099.13456362'), ('B1_TE16_B1_TE13[2]', '1025.13456362')]