免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1972 | 回复: 4
打印 上一主题 下一主题

有编程高手能给一段代码吗?谢谢 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-07 14:08 |只看该作者 |倒序浏览
有编程高手能给一段代码吗?谢谢
两个文件,一个含有300个数据,
数据1:220,300,55,660,7575,
数据2:60,100,595,4,32,
数据3:3,5,2,1,6,

。。。。

数据299:43,56,454,34,21,
数据300:12,67,32,78,35

另一个是这300个数据出现的频率,

数据1, 2次
数据2, 1次
。。。
数据300, 3次,


希望结果:

数据1:220,300,55,660,7575,
数据1:220,300,55,660,7575,
数据2:60,100,595,4,32,
数据3:3,5,2,1,6,
。。。。

数据299:43,56,454,34,21,
数据300:12,67,32,78,35
数据300:12,67,32,78,35
数据300:12,67,32,78,35

基本思想是按照文件二的读出频率,决定循环写的次数,
然后循环写文件一的对应项,应该是两个循环解决,限于本人不熟悉Python,有编程高手愿意给一段程序范例吗,感激不禁, 谢谢。

论坛徽章:
0
2 [报告]
发表于 2009-10-07 15:46 |只看该作者
#!/usr/bin/python
#-*-coding:utf-8-*-
#FileName:chinaunix_1.py
'''
思路:
1.把文件2中的内容存到一个字典当中
2.按行读取文件1的内容,并从字典中获取此行循行的次数进行打印
'
''

import os

def main():
    
    fileName1 = "file1"
    fileName2 = "file2"
    dic = {}
    
    #判断文件是否存在
    if not os.path.exists(fileName1) or not os.path.exists(fileName2):
        print("文件不存在,或路径不正确!")
    else:
        #加载文件2的内容到字典中
        f2 = open(fileName2,"r")
        for line in f2:
            s = line.strip().split(",")
            t = s[1].strip().replace("次","")
            dic[s[0]] = int(t)
        f2.close()
            
        #读取文件1的内容然后打印相应的行数
        f1 = open(fileName1,"r")
        for line in f1:
            t = line.strip().split(":")
            for i in xrange(0,dic[t[0].strip()]):
                print(line.strip())
        f1.close()
    
if __name__ == "__main__":
    main()



---------------------------------------------------------

看下是不是要的这种效果?



file1内容:
----------------------------------------------
数据1:220,300,55,660,7575,
数据2:60,100,595,4,32,
数据3:3,5,2,1,6,
数据4:3,39,10
数据5:5,39,10

file2内容:
------------------------------------------------
数据1, 2次
数据2, 1次
数据3, 8次
数据4, 3次
数据5, 2次


结果:
-------------------------
数据1:220,300,55,660,7575,
数据1:220,300,55,660,7575,
数据2:60,100,595,4,32,
数据3:3,5,2,1,6,
数据3:3,5,2,1,6,
数据3:3,5,2,1,6,
数据3:3,5,2,1,6,
数据3:3,5,2,1,6,
数据3:3,5,2,1,6,
数据3:3,5,2,1,6,
数据3:3,5,2,1,6,
数据4:3,39,10
数据4:3,39,10
数据4:3,39,10
数据5:5,39,10
数据5:5,39,10

[ 本帖最后由 arserangel 于 2009-10-7 15:49 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2009-10-08 03:01 |只看该作者
楼上的兄弟好强悍啊!真是简单明了

论坛徽章:
0
4 [报告]
发表于 2009-10-08 05:16 |只看该作者
太佩服了,这才是高手呀,您太厉害了,。。。。。。。。。。我都不知道说啥好了,真的很敬佩!!!

论坛徽章:
0
5 [报告]
发表于 2009-10-09 11:01 |只看该作者
这个用awk也可以
awk 'ARGIND==1&&!/^$/{sub(/次/,"",$2);sub(/,/,"",$1);a[$1]=$2}ARGIND==2&&!/^$/{split($1,c,":");for(i=0;i<a[c[1]];i++){print}}' file2 file1
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP