抱歉,如果这是一个重复,但我现在找不到它。你知道吗
基本上,我正在打开并读取一个dat
文件,其中包含一堆路径,我需要循环通过这些路径来获取某些信息。你知道吗
base.dat
文件中的每一行都包含m.somenumber
。例如,文件中的某些行可能是:
Volumes/hard_disc/u14_cut//u14m12.40_all.beta/beta8
Volumes/hard_disc/u14_cut/u14m12.50_all.beta/beta8
Volumes/hard_disc/u14_cut/u14m11.40_all.beta/beta8
我需要能够重新写入dat文件,以便将所有行从最大m.number重新排序到最小m.number。然后,当我循环通过数据库中的路径(如代码中所示)时,我是以递减的m循环通过的
下面是代码的相关部分
base = open('base8.dat', 'r')
database= base.read().splitlines()
base.close()
counter=0
mu_list=np.array([])
delta_list=np.array([])
ofsset = 0.00136
beta=0
for PATH in database:
if os.path.exists(str(PATH)+'/CHI/optimal_spectral_function_CHI.dat'):
n1_array = numpy.loadtxt(str(PATH)+'/AVERAGES/av-err.n.dat')
n7_array= numpy.loadtxt(str(PATH)+'/AVERAGES/av-err.npx.dat')
n1_mean = n1_array[0]
delta=round(float(5.0+ofsset-(n1_array[0]*2.+4.*n7_array[0])),6)
par = open(str(PATH)+"/params10", "r")
for line in par:
counter= counter+1
if re.match("mu", line):
mioMU= re.findall('\d+', line.translate(None, ';'))
mioMU2=line.split()[2][:-1]
mu=mioMU2
print mu, delta, PATH
mu_list=np.append(mu_list, mu)
delta_list=np.append(delta_list,delta)
optimal_counter=0
print delta_list, mu_list
我已经检查了可能的标记重复,但我似乎无法让它为我的工作,因为我的文件技术上不包含字符串和数字。我需要排序的“number”作为一个整体包含在字符串中:
Volumes/data_disc/u14_cut/from_met/u14m11.40_all.beta/beta16
我需要将整行按m(somenumber)部分排序
假设行的数字部分是浮点数的形式,可以使用正则表达式匹配该部分,并将其从字符串转换为浮点数。你知道吗
之后,可以使用此信息对从文件中读取的所有行进行排序。我添加了一个无效行,以显示如何处理无效数据。你知道吗
作为一个简单的例子,我建议如下:
给予:
从文件中读取所有行并将其存储到一个列表(这里称为
l
的列表)之后,这个代码段就开始了。regex组criterion
捕获**m12.50**
中包含的浮点部分,正如您在regex101上看到的那样。因此,遍历所有行会得到一个新列表,其中包含所有匹配的组作为float。如果正则表达式在给定字符串上不匹配或将组转换为浮点失败,crit
被设置为零,以便以后在排序列表的最开始处有那些无效的行。你知道吗之后,使用
zip()
获得包含提取的浮点和相应字符串的tule列表。现在可以根据元组的第一个元素对元组列表进行排序,并根据新列表output
编写相应的字符串。你知道吗相关问题 更多 >
编程相关推荐