关于Python的文件操作问题,求大神们给出具体代码~ 感激不尽~

比如说我有一个待处理的txt文件:aaa.txt里面有三列信息第一列为A^AA^BB^B此类名称第一列和第二列中间有若干空格(每行的空格数可能不同)第二列为浮点数第二列和... 比如说我有一个待处理的txt文件:aaa.txt 里面有三列信息 第一列为A^A A^B B^B此类名称 第一列和第二列中间有若干空格(每行的空格数可能不同) 第二列为浮点数 第二列和第三列之间也有若干空格 第三列也为浮点数 现在我需要抓去第一列中“^”号两边名称不同的那一行信息且这一行信息中第三列中的浮点数为所有抓去出来的行数中最大的三个。将这三行信息返回给客户。 比如说有如下格式:
A^A 0.1413 0.8
A^B 0.12312 0.7
A^C 0,214 0.6
A^D 0,3145 0.9
A^E 0,3245 0.99
B^B 0.1354 0.9
那么我执行完这个程序以后 我将返回第一列两名称不同且第三列的前三名既:A^E A^D A^B的信息
返回的形式可以是创建一个txt文档 将这三组的信息写在这个文档里面
求大神解答给出代码~ 感激不尽
展开
 我来答
lix_xu
2011-04-05 · TA获得超过1213个赞
知道小有建树答主
回答量:823
采纳率:0%
帮助的人:687万
展开全部
#!/usr/bin/env python
#-*- coding: utf-8 -*-

from __future__ import with_statement
import re

values = {}
lines = []
txt_file = 'data.txt'
out_file = 'result.txt'
data_re = re.compile(ur'^(\w)\^(\w)\s+.+?\s+(.+?)\s*$')

with open(txt_file, 'rU') as f:
for line in f:
if '^' in line:
temp = data_re.findall(line)
if temp != []:
name1, name2 = temp[0][:2]
if name1 != name2:
value = float(temp[0][-1])
name = '%s^%s' % (name1, name2)
if name not in values or values[name] < value:
values[name] = value
lines.insert(0, line.strip())

with open(out_file, 'w') as f:
f.write('\n'.join(lines[:3]))
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式