gpt4 book ai didi

从这个文本文件中提取值的 Pythonic 方法

转载 作者:太空狗 更新时间:2023-10-30 02:34:46 24 4
gpt4 key购买 nike

我有一个旧版软件的输出文件,如下所示。我想从中提取值,例如,我可以将名为 direct_solar_irradiance 的变量设置为 648.957,将 target ground pressure 设置为1013.00

到目前为止,我一直在提取单独的行并按如下方式处理它们(针对我要提取的不同值重复多次):

values = lines[97].split()
self.irradiance_direct, self.irradiance_diffuse, self.irradiance_env = values

但是,我现在发现选择某些参数时,将额外的线添加到输出的中间。这当然意味着第 97 行将不再具有我需要的值。

考虑到在某些情况下可能会在输出中添加额外的行,是否有一种好的 Pythonic 方法来提取这些值?我想我需要在文件中搜索已知的文本片段,然后提取它们引用的数字,但我能想到的唯一方法非常笨拙。

所以:

  1. 是否有一种很好的 Pythonic 方式来搜索这些字符串并提取我想要的值?

  2. 如果不是,是否有其他方法明智地做到这一点? (例如,某种我一无所知的很酷的文本文件解析库)。

    ******************************* 6sV version 1.0B ******************************
    * *
    * geometrical conditions identity *
    * ------------------------------- *
    * user defined conditions *
    * *
    * month: 14 day : 1 *
    * solar zenith angle: 10.00 deg solar azimuthal angle: 20.00 deg *
    * view zenith angle: 30.00 deg view azimuthal angle: 40.00 deg *
    * scattering angle: 159.14 deg azimuthal angle difference: 20.00 deg *
    * *
    * atmospheric model description *
    * ----------------------------- *
    * atmospheric model identity : *
    * midlatitude summer (uh2o=2.93g/cm2,uo3=.319cm-atm) *
    * aerosols type identity : *
    * Maritime aerosol model *
    * optical condition identity : *
    * visibility : 8.49 km opt. thick. 550 nm : 0.5000 *
    * *
    * spectral condition *
    * ------------------ *
    * monochromatic calculation at wl 0.400 micron *
    * *
    * Surface polarization parameters *
    * ---------------------------------- *
    * *
    * *
    * Surface Polarization Q,U,Rop,Chi 0.00000 0.00000 0.00000 0.00 *
    * *
    * *
    * target type *
    * ----------- *
    * homogeneous ground *
    * monochromatic reflectance 1.000 *
    * *
    * target elevation description *
    * ---------------------------- *
    * ground pressure [mb] 1013.00 *
    * ground altitude [km] 0.000 *
    * *
    * plane simulation description *
    * ---------------------------- *
    * plane pressure [mb] 1013.00 *
    * plane altitude absolute [km] 0.000 *
    * atmosphere under plane description: *
    * ozone content 0.000 *
    * h2o content 0.000 *
    * aerosol opt. thick. 550nm 0.000 *
    * *
    * atmospheric correction activated *
    * -------------------------------- *
    * BRDF coupling correction *
    * input apparent reflectance : 0.500 *
    * *
    *******************************************************************************



    *******************************************************************************
    * *
    * integrated values of : *
    * -------------------- *
    * *
    * apparent reflectance 1.1287696 appar. rad.(w/m2/sr/mic) 588.646 *
    * total gaseous transmittance 1.000 *
    * *
    *******************************************************************************
    * *
    * coupling aerosol -wv : *
    * -------------------- *
    * wv above aerosol : 1.129 wv mixed with aerosol : 1.129 *
    * wv under aerosol : 1.129 *
    *******************************************************************************
    * *
    * integrated values of : *
    * -------------------- *
    * *
    * app. polarized refl. 0.0000 app. pol. rad. (w/m2/sr/mic) 0.000 *
    * direction of the plane of polarization 0.00 *
    * total polarization ratio 0.000 *
    * *
    *******************************************************************************
    * *
    * int. normalized values of : *
    * --------------------------- *
    * % of irradiance at ground level *
    * % of direct irr. % of diffuse irr. % of enviro. irr *
    * 0.351 0.354 0.295 *
    * reflectance at satellite level *
    * atm. intrin. ref. background ref. pixel reflectance *
    * 0.000 0.000 1.129 *
    * *
    * int. absolute values of *
    * ----------------------- *
    * irr. at ground level (w/m2/mic) *
    * direct solar irr. atm. diffuse irr. environment irr *
    * 648.957 655.412 544.918 *
    * rad at satel. level (w/m2/sr/mic) *
    * atm. intrin. rad. background rad. pixel radiance *
    * 0.000 0.000 588.646 *
    * *
    * *
    * sol. spect (in w/m2/mic) *
    * 1663.594 *
    * *
    *******************************************************************************





    *******************************************************************************
    * *
    * integrated values of : *
    * -------------------- *
    * *
    * downward upward total *
    * global gas. trans. : 1.00000 1.00000 1.00000 *
    * water " " : 1.00000 1.00000 1.00000 *
    * ozone " " : 1.00000 1.00000 1.00000 *
    * co2 " " : 1.00000 1.00000 1.00000 *
    * oxyg " " : 1.00000 1.00000 1.00000 *
    * no2 " " : 1.00000 1.00000 1.00000 *
    * ch4 " " : 1.00000 1.00000 1.00000 *
    * co " " : 1.00000 1.00000 1.00000 *
    * *
    * *
    * rayl. sca. trans. : 0.84422 1.00000 0.84422 *
    * aeros. sca. " : 0.94572 1.00000 0.94572 *
    * total sca. " : 0.79616 1.00000 0.79616 *
    * *
    * *
    * *
    * rayleigh aerosols total *
    * *
    * spherical albedo : 0.23410 0.12354 0.29466 *
    * optical depth total: 0.36193 0.55006 0.91199 *
    * optical depth plane: 0.00000 0.00000 0.00000 *
    * reflectance I : 0.00000 0.00000 0.00000 *
    * reflectance Q : 0.00000 0.00000 0.00000 *
    * reflectance U : 0.00000 0.00000 0.00000 *
    * polarized reflect. : 0.00000 0.00000 0.00000 *
    * degree of polar. : nan 0.00 nan *
    * dir. plane polar. : -45.00 -45.00 -45.00 *
    * phase function I : 1.38819 0.27621 0.71751 *
    * phase function Q : -0.09117 -0.00856 -0.04134 *
    * phase function U : -1.34383 0.02142 -0.52039 *
    * primary deg. of pol: -0.06567 -0.03099 -0.05762 *
    * sing. scat. albedo : 1.00000 0.98774 0.99261 *
    * *
    * *
    *******************************************************************************
    *******************************************************************************



    *******************************************************************************
    * atmospheric correction result *
    * ----------------------------- *
    * input apparent reflectance : 0.500 *
    * measured radiance [w/m2/sr/mic] : 260.747 *
    * atmospherically corrected reflectance *
    * Lambertian case : 0.52995 *
    * BRDF case : 0.52995 *
    * coefficients xa xb xc : 0.00241 0.00000 0.29466 *
    * y=xa*(measured radiance)-xb; acr=y/(1.+xc*y) *

最佳答案

更完整、也许更健壮的解决方案将需要使用使用自定义语法的解析器 (pyparsing) 或某种基于 FSM 的处理器 (TextFSM)。

这两个选项都非常适合用于此输出。一个(可能)更轻量级的解决方案是根据已知标签识别每一行,然后适本地提取(如其他海报所建议的那样)。

有几种方法可以实现这一点。我建议将“提取器”可调用对象映射到已知的行标签,然后迭代并调用匹配的提取器。每个可调用对象都将 line 和上下文对象/字典作为参数,并根据需要向上下文添加属性。类似于 https://gist.github.com/1035938 的内容

关于从这个文本文件中提取值的 Pythonic 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6413439/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com