- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试从 python 中的大量文本文件中提取值。我需要的数字是科学记数法。我的结果文本文件如下
ADDITIONAL DATA
Tip Rotation (degrees)
Node , UR[x] , UR[y] , UR[z]
21 , 1.0744 , 1.2389 , -4.3271
22 , -1.0744 , -1.2389 , -4.3271
53 , 0.9670 , 1.0307 , -3.8990
54 , -0.0000 , -0.0000 , -3.5232
55 , -0.9670 , -1.0307 , -3.8990
Mean rotation variation along blade
Region , Rotation (degrees)
Partition line 0, 7.499739E-36
Partition line 1, -3.430092E-01
Partition line 2, -1.019287E+00
Partition line 3, -1.499808E+00
Partition line 4, -1.817651E+00
Partition line 5, -2.136372E+00
Partition line 6, -2.448321E+00
Partition line 7, -2.674414E+00
Partition line 8, -2.956737E+00
Partition line 9, -3.457806E+00
Partition line 10, -3.995106E+00
我过去一直成功地使用正则表达式,但它似乎不想获取数字。我的结果文件中的节点数发生变化,因此无法按行搜索。我的python脚本如下。
import re
from pylab import *
from scipy import *
import matplotlib
from numpy import *
import numpy as np
from matplotlib import pyplot as plt
import csv
########################################
minTheta = -90
maxTheta = 0
thetaIncrements = 10
numberOfPartitions = 10
########################################
numberOfThetas = ((maxTheta - minTheta)/thetaIncrements)+1
print 'Number of thetas = '+str(numberOfThetas)
thetas = linspace(minTheta,maxTheta,numberOfThetas)
print 'Thetas = '+str(thetas)
part = linspace(1,numberOfPartitions,numberOfPartitions)
print 'Parts = '+str(part)
meanRotations = np.zeros((numberOfPartitions+1,numberOfThetas))
#print meanRotations
theta = minTheta
n=0
m=0
while theta <= maxTheta:
fileName = str(theta)+'.0.txt'
#print fileName
regexp = re.compile(r'Partition line 0, .*?([-+0-9.E]+)')
with open(fileName) as f:
for line in f:
match = regexp.match(line)
if match:
print (float((match.group(1))))
meanRotations[0,m]=(float((match.group(1))))
regexp = re.compile(r'Partition line 1, .*?([-+0-9.E]+)')
with open(fileName) as f:
for line in f:
match = regexp.match(line)
if match:
print (float((match.group(1))))
meanRotations[1,m]=(float((match.group(1))))
regexp = re.compile(r'Partition line 2, .*?([-+0-9.E]+)')
with open(fileName) as f:
for line in f:
match = regexp.match(line)
if match:
print (float((match.group(1))))
meanRotations[2,m]=(float((match.group(1))))
regexp = re.compile(r'Partition line 3, .*?([-+0-9.E]+)')
with open(fileName) as f:
for line in f:
match = regexp.match(line)
if match:
print (float((match.group(1))))
meanRotations[3,m]=(float((match.group(1))))
regexp = re.compile(r'Partition line 4, .*?([-+0-9.E]+)')
with open(fileName) as f:
for line in f:
match = regexp.match(line)
if match:
print (float((match.group(1))))
meanRotations[4,m]=(float((match.group(1))))
regexp = re.compile(r'Partition line 5, .*?([-+0-9.E]+)')
with open(fileName) as f:
for line in f:
match = regexp.match(line)
if match:
print (float((match.group(1))))
meanRotations[5,m]=(float((match.group(1))))
regexp = re.compile(r'Partition line 6, .*?([-+0-9.E]+)')
with open(fileName) as f:
for line in f:
match = regexp.match(line)
if match:
print (float((match.group(1))))
meanRotations[6,m]=(float((match.group(1))))
regexp = re.compile(r'Partition line 7, .*?([-+0-9.E]+)')
with open(fileName) as f:
for line in f:
match = regexp.match(line)
if match:
print (float((match.group(1))))
meanRotations[7,m]=(float((match.group(1))))
regexp = re.compile(r'Partition line 8, .*?([-+0-9.E]+)')
with open(fileName) as f:
for line in f:
match = regexp.match(line)
if match:
print (float((match.group(1))))
meanRotations[8,m]=(float((match.group(1))))
regexp = re.compile(r'Partition line 9, .*?([-+0-9.E]+)')
with open(fileName) as f:
for line in f:
match = regexp.match(line)
if match:
print (float((match.group(1))))
meanRotations[9,m]=(float((match.group(1))))
regexp = re.compile(r'Partition line 10, .*?([-+0-9.E]+)')
with open(fileName) as f:
for line in f:
match = regexp.match(line)
if match:
print (float((match.group(1))))
meanRotations[10,m]=(float((match.group(1))))
m=m+1
theta = theta+thetaIncrements
print 'Mean rotations on partition lines = '
print meanRotations
任何帮助将不胜感激!!
最佳答案
这个文件格式是标准的吗?如果是这样?您可以使用另一种技术获得所有浮点值。所以,这是代码:
str = """ ADDITIONAL DATA
Tip Rotation (degrees)
Node , UR[x] , UR[y] , UR[z]
21 , 1.0744 , 1.2389 , -4.3271
22 , -1.0744 , -1.2389 , -4.3271
53 , 0.9670 , 1.0307 , -3.8990
54 , -0.0000 , -0.0000 , -3.5232
55 , -0.9670 , -1.0307 , -3.8990
Mean rotation variation along blade
Region , Rotation (degrees)
Partition line 0, 7.499739E-36
Partition line 1, -3.430092E-01
Partition line 2, -1.019287E+00
Partition line 3, -1.499808E+00
Partition line 4, -1.817651E+00
Partition line 5, -2.136372E+00
Partition line 6, -2.448321E+00
Partition line 7, -2.674414E+00
Partition line 8, -2.956737E+00
Partition line 9, -3.457806E+00
Partition line 10, -3.995106E+00
"""
arr = str.split()
for index in enumerate(arr):
print index # just to see the list
start = 59 # from this position the numbers begin
step = 4 # current number is each fourth
ar = []
for j in range(start, len(arr), step):
ar.append(arr[j])
floatAr = []
# or you can use this expression instead of the following loop
# floatAr = [float(x) for x in ar]
for n in range(len(ar)):
floatAr.append(float(ar[n]))
print floatAr
最后,您将收到一个名为 floatAr 的列表,其中包含您所有的浮点值。您可以添加 try-except block 以获得更好的可用性。
或者,如果您想使用正则表达式,代码如下:
<!--language:python -->
str = """ ADDITIONAL DATA
Tip Rotation (degrees)
Node , UR[x] , UR[y] , UR[z]
21 , 1.0744 , 1.2389 , -4.3271
22 , -1.0744 , -1.2389 , -4.3271
53 , 0.9670 , 1.0307 , -3.8990
54 , -0.0000 , -0.0000 , -3.5232
55 , -0.9670 , -1.0307 , -3.8990
Mean rotation variation along blade
Region , Rotation (degrees)
Partition line 0, 7.499739E-36
Partition line 1, -3.430092E-01
Partition line 2, -1.019287E+00
Partition line 3, -1.499808E+00
Partition line 4, -1.817651E+00
Partition line 5, -2.136372E+00
Partition line 6, -2.448321E+00
Partition line 7, -2.674414E+00
Partition line 8, -2.956737E+00
Partition line 9, -3.457806E+00
Partition line 10, -3.995106E+00"""
regex = '\s-?[1-9]+[0-9]*.?[0-9]*E-?\+?[0-9]+\s?'
import re
values = re.findall(regex, str)
floatAr = [float(x) for x in values]
print floatAr
顺便说一句,这里有一个很好的 python 在线正则表达式检查器 pythex
关于python - 在 python 中使用正则表达式提取科学记数法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19546631/
我正在研究科学建模程序,但还没有让我的程序编译。我还没有触及我的教授坚持以前工作过的代码,只有 makefile。经过多次尝试,我得到的最远的是这个错误: Error on line 1112: De
有人知道对各种 Material 相互作用的行为进行编程的好资源吗? 游戏编程物理资源通常包括碰撞检测、动量、惯性等,但它们似乎处理一种理想化的“ Material ”。我感兴趣的是模拟弹丸撞击金属的
早上好 谁能帮我理解为什么在 Linux scientific 上打开 codeblock 并选择控制台后,在编译过程中它一直说找不到 g++ 并且不运行编译阶段?我们非常确定我们在初始化阶段插入了
我有一条由 (x,y) 对序列形成的轨迹。我想使用样条在此轨迹上插入点。 我该怎么做?使用 scipy.interpolate.UnivariateSpline 不起作用,因为 x 和 y 都不是单调
我正在从质谱仪读取数据文件,其中许多数字都是 e 格式的,例如 4096.26 5.785e1 4096.29 5.784e1 4096.31 5.784e1 4096.33 5.784e1 4096
我已经使用官方的Windows安装程序安装了Go(1.14),现在我正在阅读Go的书 https://www.golang-book.com/books/intro/1。它说: 对于Windows,安
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 8 年前。 Improve
我有一些方程式取决于许多变量。我想用 python 求解方程。这是一个更简单的方程式: f(x,y,theta,w) = x - y + theta * (w - y) 在给定其余参数的值的情况下,如
假设我有一个表达式,我需要找到它的总和: 边界是有限且已知的。在 scipy/numpy 中计算这样一个总和的最快或最有效的方法是什么。可以使用嵌套的 for 循环来完成,但是有更好的方法吗? 最佳答
因此根据 cplusplus.com,当您通过以下方式将输出流的格式标志设置为科学记数法时 of.setf(ios::scientific) 您应该在指数中看到 3 位加号和一个符号。但是,我的输出似
我在信号上使用 scipy.fft,使用移动窗口绘制随时间变化的频率幅度(这里是 an example,时间在 X 上,频率在 Y 上,并且振幅是颜色)。 但是,只有少数频率让我感兴趣(仅约 3、4
我使用的是来自Python的SciPy包,目的是解决一个有很多约束的最小化问题。。比方说我的解决方案有相互矛盾的限制。出于这个问题的目的,让我们假设我有这些限制:。有了这些界限[(0.001,无),(
我在 scipy 'leastsq' 优化例程中遇到问题,如果我执行下面的程序,它说 raise errors[info][1], errors[info][0] TypeError: Imp
假设我选择了一个随机来源,例如 CNN。根据关键字自动将抓取的文章分类,或者针对不同的类别抓取网站的各个部分,例如 cnn.com/tech 或/entertainment,这样会更有利吗?第二个选项
Python 的风格最佳实践是否适用于科学编码? 我发现很难保持科学 Python 代码的可读性。 例如,建议为变量使用有意义的名称,并通过避免 import * 来保持命名空间的顺序。因此,例如:
我想在 TIFF 文件中操作 RGB 波段并在 matplotlib 上输出 灰度 贴图。到目前为止我有这段代码,但我无法在灰度上得到它: import scipy as N import gdal
对于 Google 表格,我需要在一行中有 4 个复选框。他们代表(3)学校考试被拒。最后一个框是当所有这些都被拒绝时。 2 个月前,我对 VBA 一无所知,从那时起我就用 6 岁的代码制作了一系列宏
我即将完成 Udacity 的计算机科学入门 101 类(class),并正在寻求一些帮助来解决最终测验问题之一。以下代码在提交时返回“通过”,但我觉得我没有捕获本次测验中挑战的核心。任何有关如何处理
我是一名优秀的程序员,十分优秀!