首页 > 编程问答 >正则表达式解释尴尬的科学记数法

正则表达式解释尴尬的科学记数法

时间:2024-07-31 04:55:09浏览次数:7  
标签:python regex scientific-notation

好的,我正在处理这个 ENDF 数据,请参阅 此处 有时,在文件中,它们很可能是我见过的最烦人的科学计数法浮点数编码 1 那里经常使用类似 1.234e-3 的东西来代替 1.234-3 (省略“e”)。

现在我看到了一个库,它只是将 - 更改为 e- 或||。 |到 + 通过简单的替换。但当某些数字可能为负数时,这就不起作用了。当输入是 e+ 时,你最终会得到一些废话,比如 e-5.122e-5 -5.122-5 所以,我想我需要转向正则表达式?我愿意接受另一种更简单的解决方案,但这是我现在能想到的最好的解决方案。我正在使用

python 库。我可以做一个简单的替换,我寻找 re 并像这样替换它: [0-9]-[0-9] 但显然这通常不起作用,因为我需要让

import re
str1='-5.634-5'
x = re.sub('[0-9]-[0-9]','4e-5',str1)
print(x)

之前和之后的数字保持原来的样子,不仅仅是我编造的东西...我之前使用过捕获组,但是在这种情况下,对 - 之前和之后的数字使用捕获组并使用以下命令将其反馈回替换中的最快方法是什么 - 正则表达式库 Python import re 1 是的,我知道,fortran...80 个字符...节省空间...打孔卡...没人在乎了。

1 Yes, I know, fortran...80 characters...save space...punch cards...nobody cares anymore.


可以使用捕获组来做到这一点!说得对,我们需要使用捕获组来提取连字符前后出现的数字。

这是可以使用的正则表达式:

import re

str1 = '-5.634-5' 
# str1 = '1.234-3'
# str1 = '1.234+3'

x = re.sub(r"([\d\.]+)(-)([\d]+)", r"\1e\2\3", str1)

print(x) 

让我们来分解一下这个正则表达式:

  • ([\d\.]+) :这部分匹配一个或多个数字或点,并将此匹配存储在第一个捕获组中。
  • (-) :这匹配一个连字符,并将其存储在第二个捕获组中。
  • ([\d]+) :这匹配一个或多个数字,并将此匹配存储在第三个捕获组中。

在替换字符串 r"\1e\2\3" 中,我们使用:

  • \1 :引用第一个捕获组的内容。
  • e :插入字母 'e'。
  • \2 :引用第二个捕获组的内容(连字符)。
  • \3 :引用第三个捕获组的内容。

这样,代码就能正确处理正数、负数以及指数为正数或负数的情况,并将它们转换为标准的科学计数法表示形式。

标签:python,regex,scientific-notation
From: 78813619

相关文章

  • python函数:带星号的参数一个接一个
    我想知道为什么定义以下函数被认为是好的。deffoo(*x,y):pass据我所知,现在有调用此函数的方法,因为它总是缺少y的值。(如果我错了,请纠正我。)这有什么我不知道的用处吗?你说得对,在Python中定义一个像deffoo(*x,y):...这样的函数,在试图以常规方......
  • 基于遗传(GA)、粒子群(PSO)、模拟退火(SA)、禁忌搜索(ST)、蚁群算法(ACO)、自自组织神
        ......
  • 10个append()函数在Python程序开发中的创新应用
    文末赠免费精品编程资料~~在Python编程的世界里,append()函数是列表操作中最常见的方法之一。它允许我们在列表的末尾添加一个元素,这一简单的功能却能激发无限的创造力。今天,我们将探讨append()函数在Python程序开发中的10种创新应用,从基本用法到高级技巧,逐步深入。1.构......
  • 全网最适合入门的面向对象编程教程:28 类和对象的Python实现-Python编程原则、哲学和规
    全网最适合入门的面向对象编程教程:28类和对象的Python实现-Python编程原则、哲学和规范大汇总摘要:本文主要介绍了在使用Python进行面向对象编程时,Python异常处理的原则-“请求谅解,而非许可”,以及软件设计和Python的编程原则,同时介绍了PEP8规范。原文链接:FreakStud......
  • python生成器
    一前言环境:python3.10win10二生成器1关于生成器先看一个例子    定义了一个函数,当我们运行该函数时,并未像普通函数那样执行函数体内的代码    从其中的英文可知,执行函数得到了一个生成器对象,这个生成器对象也叫做generatoriterator(生成器迭代器),generatorit......
  • 生成MySQL-oracle-SQL server数据字典(附Python代码)
    生成数据字典,早年写的,请注意新的版本变化。(1)MySQL元数据SQLUSEinformation_schema;#取出库和表。select  TABLE_SCHEMAAS'数据库名称',  TABLE_NAMEAS'表名',  TABLE_TYPEAS'表类型',  ROW_FORMATAS'行格式',  ENGINEAS'数据库引擎',  TABL......
  • Python - Method Resolution Order (MRO)
    TheorderinwhichPythonsearchesforattributesinbaseclassesiscalledmethodresolutionorder(MRO).Itgivesalinearizedpathforaninheritancestructure.PythoncomputesanMROforeveryclassinthehierarchy;thisMROiscomputedusingthe‘C3......
  • 计算机毕业设计选题推荐-零食批发商仓库管理系统-Java/Python项目实战
    ✨作者主页:IT研究室✨个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。☑文末获取源码☑精彩专栏推荐⬇⬇⬇Java项目Python项目安卓项目微信小程序项目......
  • 【自动化测试必学语言】python:语言基础
    目录Python介绍语言的分类注释单行注释多行注释变量定义变量使用变量变量名的命名规范数据类型数字类型非数字类型type()函数input输入print输出格式化输出快捷键(小操作)运算符算术运算符 比较运算符Python介绍作者:吉多·范罗苏姆(Guidov......
  • Python基础知识笔记——常用函数
    一、range()函数range()函数用于生成一个整数序列。它通常用于循环结构中,例如for循环,以提供循环的迭代次数。range()函数可以有1到3个参数。#range(start,stop,step)range(2,6,2)#生成从2开始,到6结束(不包括6),步长为2的一串数字#参数指定不完全时,默认从0开始,步长......