在python中从filnames中提取和排序数字

2024-05-16 00:07:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个非常基本的问题。我有一个名为Dipole_E0=1.2625E-01.dat的文件,我想提取1.2625E-01部分,最后按升序排序。如何做到这一点?我首先尝试用.split()来plit文件名,但它不是我所期望的。谢谢你的帮助。你知道吗

最好的

罗兰


Tags: 文件排序文件名datsplit升序e0dipole
3条回答

最好的方法是使用regexp。要从文件名获取值,请执行以下操作:

m = re.search(filename, '^Dipole_E0=(.*)/s?')
val = m.group(0)

遍历所有dilename并将所有值附加到数组中。就这样。你知道吗

你想研究正则表达式。在python中,它们生活在re模块中。根据具体的格式,例如:

import re
ematch = re.compile("=([0-9]*\.[0-9]*[eE][+-][0-9]+)")
val = ematch.search(filename).group(0)

可以使用lists上的.sort()方法对列表进行排序,也可以使用sorted(list)builtin对列表进行排序,这将为您提供一个新列表。你知道吗

这是使用generator expressionthe ^{} builtin的好情况:

sorted(float(filename.split("=", 1)[1].rsplit(".", 1)[0]) for filename in filenames)

其中filenames是文件名列表。你知道吗

>>> filenames = ["Dipole_E0=1.2625E-01.dat", "Dipole_E0=1.3625E-01.dat", "Dipole_E0=0.2625E-01.dat"]
>>> sorted(float(filename.split("=", 1)[1].rsplit(".", 1)[0]) for filename in filenames)
[0.02625, 0.12625, 0.13625]

相关问题 更多 >