为什么这个正则表达式不返回任何内容?

时间:2018-01-30 20:35:39

标签: python regex

我最近一直致力于机器学习领域的一个项目,而且我的数据所需的正则表达式遇到了一些麻烦。出于某种原因,它不会返回一个十进制值,而是返回一个None值。有什么建议?下面是我的代码,以及我试图从中获取数据的文件。

for list_num in range(0,92):
    mach = [3,4,5,6,7]
    for j in range(0,4):
        if list_num >= 0 and list_num <= 4:
            if os.path.isfile('C://Users/avickers/Desktop/XFOIL_Training_Data/listofoutputs/listofoutputs0006'+str(mach[j])+'.pol'):
                tempaccess = os.listdir('C://Users/avickers/Desktop/XFOIL_Training_Data/listofoutputs')
                with open('C://Users/avickers/Desktop/XFOIL_Training_Data/listofoutputs/listofoutputs0006'+str(mach[j])+'.pol','r') as tempfile:
                    lines = tempfile.readlines()
                    file = tempfile.read()
                name = '0006'
                f = open('C://Users/avickers/Desktop/XFOIL_Training_Data/listofoutputs/data.pol','a+')
                Re =  re.search(r'Re\s*=\s*(\d\.\d+)',file)
                AOA = []
                Dl = []
                Dd = []
                num=0
                for line in lines[12:]:
                    columns = line.split()
                    AOA.append(columns[0])
                    Dl.append(columns[1])
                    Dd.append(columns[2])
                    num += 1
                for i in range(0,num):
                    f.write(name+' ')
                    f.write(str(mach[j]/10)+' ')
                    f.write(str(Re)+' ')
                    f.write(AOA[i]+' ')
                    f.write(Dl[i]+' ')
                    f.write(Dd[i]+'\n')

文件:

XFOIL         Version 6.99
Calculated polar for: NACA 0006
1 1 Reynolds number fixed          Mach number fixed         

xtrf =   1.000 (top)        1.000 (bottom)  
Mach =   0.300     Re =     2.213 e 6     Ncrit =   9.000

alpha    CL        CD       CDp       CM      Cpmin   XCpmin   Top_Xtr  
Bot_Xtr
------ -------- --------- --------- -------- -------- -------- -------- ----
-10.000  -0.7244   0.11348   0.11239   0.0360  -3.2095   0.0001   1.0000   
0.0032
-9.500  -0.7284   0.10263   0.10156   0.0311  -3.6224   0.0001   1.0000   
0.0033
-9.000  -0.7330   0.09190   0.09085   0.0257  -3.9746   0.0001   1.0000   
0.0036

我尝试提取的具体值是Re。谢谢!

1 个答案:

答案 0 :(得分:2)

“无”的原因是file没有任何内容。

lines = tempfile.readlines()
file = tempfile.read()

一旦使用readlines()完成行,指针tempfile就在最后。你不能再次使用它来阅读。你需要再次打开文件。

x="""XFOIL         Version 6.99
Calculated polar for: NACA 0006
1 1 Reynolds number fixed          Mach number fixed

xtrf =   1.000 (top)        1.000 (bottom)
Mach =   0.300     Re =     2.213 e 6     Ncrit =   9.000

alpha    CL        CD       CDp       CM      Cpmin   XCpmin   Top_Xtr
Bot_Xtr
------ -------- --------- --------- -------- -------- -------- -------- ----
-10.000  -0.7244   0.11348   0.11239   0.0360  -3.2095   0.0001   1.0000
 0.0032
-9.500  -0.7284   0.10263   0.10156   0.0311  -3.6224   0.0001   1.0000
0.0033
-9.000  -0.7330   0.09190   0.09085   0.0257  -3.9746   0.0001   1.0000
0.0036"""

import re
print re.search(r"Re\s*=\s*(\d\.\d+)", x).group(1)

使用group(1)。 它会打印2.123