我最近一直致力于机器学习领域的一个项目,而且我的数据所需的正则表达式遇到了一些麻烦。出于某种原因,它不会返回一个十进制值,而是返回一个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。谢谢!
答案 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