Python 不带e或e的指数格式

Python 不带e或e的指数格式,python,Python,我有以下类型的列表:list=[1,3,4.23123e-07] 我想将此列表写入文本文件。我希望文件如下所示: 1 3 4.231-7 对于指数项,我希望能够去掉指数本身中的e和任何前面的零,从4.23123e-07到4.231-7 除了在我的列表中循环并放入字符串4.231-7代替整数4.23123e-07,还有什么方法可以做到这一点吗?您可以从字符串中删除任何e,以及+或-后面的任何零: import re values = [1, 3, 4.23123e-07] def forma

我有以下类型的列表:
list=[1,3,4.23123e-07]

我想将此列表写入文本文件。我希望文件如下所示:

1 
3
4.231-7
对于指数项,我希望能够去掉指数本身中的
e
和任何前面的零,从
4.23123e-07
4.231-7


除了在我的列表中循环并放入字符串
4.231-7
代替整数
4.23123e-07
,还有什么方法可以做到这一点吗?

您可以从字符串中删除任何
e
,以及
+
-
后面的任何零:

import re
values = [1, 3, 4.23123e-07]

def format_without_e(number):
  no_e = re.sub('e', '', str(number), re.IGNORECASE)
  return re.sub('(?<=[+-])0+', '', no_e)

formatted_numbers = [format_without_e(value) for value in values]

print(formatted_numbers)
# ['1', '3', '4.23123-7']

print("\n".join(formatted_numbers))
# 1
# 3
# 4.23123-7
重新导入
数值=[1,3,4.23123e-07]
def格式(无编号):
no_e=re.sub('e','',str(编号),re.IGNORECASE)

返回re.sub('(?使用
%g
进行精度控制,使用
re
进行简化。感谢@madpysicator更正错误

import re

[re.sub('e([-+])?[0]*',r"\1", '%.4g'%s) for s in l]
比如说

In [46]: l = [1, 3, 4.23123e-07]

In [47]: [re.sub('e([-+])?[0]*',r"\1", '%.4g'%s) for s in l]
Out[47]: ['1', '3', '4.231-7']

我很确定
4.23123e-07
不是整数……另外,不要命名变量
list
,否则你会冒着覆盖内置
list
函数的风险。如果你需要在SO's markdown中输入换行符,只需在行尾留一个空格。你不需要单独写段落。我的道歉!谢谢你的支持NPTPU应该考虑点击它旁边的复选标记来选择答案。你不需要为它做两个单独的表达式,但是这样读起来要容易得多。谢谢!这很好,但是我的列表基本上变成了一个长串,比如134.23 123-7。有没有办法把我的列表的元素分开?您应该在列表中添加换行符而不是空格。与其连接字符串,不如使用列表理解。或者,您可以使用换行符连接,并在正则表达式标志中启用跨行替换。@MadPhysicalist:原来的问题在值之间有空格。已更新。列表理解看起来比列表(map)(…
@madpysicast是的!它更简单,我会编辑它。Thks。另外,你的正则表达式应该能够处理
[-+]?
e
之后,而不仅仅是一个负号。所以
'e(+-])[0]*,“-”,用<代码> R′1′/CODE代替。随着这个变化,我会说这是最为纵横的答案。@ Mal物理学家,你认为更全面。谢谢。