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物理学家,你认为更全面。谢谢。