python从txt文件中读取数字,并且判断其大小。
txt文件名假设为a,格式如下:文件的前面部分有n行,第n+1行开始为数字:0.00000000E+001.99000000E-021.05000000E+000.000...
txt文件名假设为a,格式如下:
文件的前面部分有n行,第n+1行开始为数字:
0.00000000E+00 1.99000000E-02 1.05000000E+00 0.00000000E+00 3.88519671E+02
4.20000000E-02 1.99000000E-02 1.00800000E+00 0.00000000E+00 4.23216155E+02
8.40000000E-02 1.99000000E-02 9.66000000E-01 0.00000000E+00 4.67920285E+02
1.26000000E-01 1.99000000E-02 9.24000000E-01 0.00000000E+00 4.89975818E+02
1.68000000E-01 1.99000000E-02 8.82000000E-01 0.00000000E+00 5.01845166E+02
2.10000000E-01 1.99000000E-02 8.40000000E-01 0.00000000E+00 5.10017363E+02
2.52000000E-01 1.99000000E-02 7.98000000E-01 0.00000000E+00 5.15927207E+02
2.94000000E-01 1.99000000E-02 7.56000000E-01 0.00000000E+00 5.18914324E+02
3.36000000E-01 1.99000000E-02 7.14000000E-01 0.00000000E+00 5.18683254E+02
我想对第5行最后一列对应的数字进行判断(即5.01845166E+02),若在500~520范围之外则修改参数重新计算;若在范围之内则输出最后一列的所有数据到另一个文件b。
请问该怎么实现啊。 展开
文件的前面部分有n行,第n+1行开始为数字:
0.00000000E+00 1.99000000E-02 1.05000000E+00 0.00000000E+00 3.88519671E+02
4.20000000E-02 1.99000000E-02 1.00800000E+00 0.00000000E+00 4.23216155E+02
8.40000000E-02 1.99000000E-02 9.66000000E-01 0.00000000E+00 4.67920285E+02
1.26000000E-01 1.99000000E-02 9.24000000E-01 0.00000000E+00 4.89975818E+02
1.68000000E-01 1.99000000E-02 8.82000000E-01 0.00000000E+00 5.01845166E+02
2.10000000E-01 1.99000000E-02 8.40000000E-01 0.00000000E+00 5.10017363E+02
2.52000000E-01 1.99000000E-02 7.98000000E-01 0.00000000E+00 5.15927207E+02
2.94000000E-01 1.99000000E-02 7.56000000E-01 0.00000000E+00 5.18914324E+02
3.36000000E-01 1.99000000E-02 7.14000000E-01 0.00000000E+00 5.18683254E+02
我想对第5行最后一列对应的数字进行判断(即5.01845166E+02),若在500~520范围之外则修改参数重新计算;若在范围之内则输出最后一列的所有数据到另一个文件b。
请问该怎么实现啊。 展开
1个回答
展开全部
#!/usr/bin/python
# encoding: utf-8
import re
context = """
0.00000000E+00 1.99000000E-02 1.05000000E+00 0.00000000E+00 3.88519671E+02
4.20000000E-02 1.99000000E-02 1.00800000E+00 0.00000000E+00 4.23216155E+02
8.40000000E-02 1.99000000E-02 9.66000000E-01 0.00000000E+00 4.67920285E+02
1.26000000E-01 1.99000000E-02 9.24000000E-01 0.00000000E+00 4.89975818E+02
1.68000000E-01 1.99000000E-02 8.82000000E-01 0.00000000E+00 5.01845166E+02
2.10000000E-01 1.99000000E-02 8.40000000E-01 0.00000000E+00 5.10017363E+02
2.52000000E-01 1.99000000E-02 7.98000000E-01 0.00000000E+00 5.15927207E+02
2.94000000E-01 1.99000000E-02 7.56000000E-01 0.00000000E+00 5.18914324E+02
3.36000000E-01 1.99000000E-02 7.14000000E-01 0.00000000E+00 5.18683254E+02
"""
patt = re.compile(r"\d\.\d+E[+-]\d{2}")
array = []
for ln in filter(None, context.splitlines()):
array.append(map(float, patt.findall(ln)))
debug = True
def debugView(obj):
import pprint
if debug:
pprint.pprint(obj)
debugView(array)
你的数据来自文本文件,可以用 for ln in filter(None, open(datafile, 'rt'))
替代 for ln in filter(None, context.splitlines())
追问
谢谢回复,没太看明白。
请问找到第5行最后一列的数字体现在哪一句呢?
追答
这段代码解读文本到数组中, 并用debugView展示数组中的数值
#~ 对第5行最后一列对应的数字进行判断(即5.01845166E+02),
#~ 若在500~520范围之外则修改参数重新计算;
#~ 若在范围之内则输出最后一列的所有数据到另一个文件b
if 500 <= array[4][-1] <= 520:
with open("output.txt", "w") as handle:
for row in array:
handle.write("\t".join(map(str, row))+"\n")
else:
# 修改参数重新计算;
pass
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询