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。
请问该怎么实现啊。
展开
 我来答
tim_spac
2013-11-27 · TA获得超过3628个赞
知道大有可为答主
回答量:1804
采纳率:100%
帮助的人:2025万
展开全部
#!/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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式