鱼C论坛

 找回密码
 立即注册
查看: 1350|回复: 11

[已解决]对数据列的处理(附文件贴图)

[复制链接]
发表于 2018-3-28 09:40:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这个怎么编写实现呢:
历遍txt2的每一行,找到与该行第一个数据一样的 txt1的某一行的第三个数据,
就把txt2那行第二个数据与txt1那行第二个数据相加
输出txt2经过上一步处理过的文件为txt3
最佳答案
2018-3-28 10:59:48
  1. # /usr/bin/env pathon3
  2. # -*- coding: utf-8 -*-
  3. # @Author: UrAir
  4. # # @Date: 2018-01-21 05:23:24
  5. import re
  6. D = {}
  7. with open('1.txt','r') as f:
  8.     for line in f:
  9.         L = re.split(r'\s+',line.strip())
  10.         D[L[2]] = (L[0],L[1])

  11. with open('3.txt','w') as f_w:
  12.     with open('2.txt','r') as f_r:
  13.         for line in f_r:
  14.             L = re.split(r'\s+',line.strip())
  15.             L[1] = str(int(L[1])+int(D[L[0]][1]))
  16.             f_w.write('{0:<8}{1:<8}{2}\n'.format(L[0],L[1],L[2]))
复制代码

捕获.PNG
{ODKE$(SSL{$_@)X}PQ5O}E.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-28 10:54:28 | 显示全部楼层
这是什么,矩阵么?还是关系型数据库的2张表?
写个SQL查询就可以了啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-28 10:59:48 | 显示全部楼层    本楼为最佳答案   
  1. # /usr/bin/env pathon3
  2. # -*- coding: utf-8 -*-
  3. # @Author: UrAir
  4. # # @Date: 2018-01-21 05:23:24
  5. import re
  6. D = {}
  7. with open('1.txt','r') as f:
  8.     for line in f:
  9.         L = re.split(r'\s+',line.strip())
  10.         D[L[2]] = (L[0],L[1])

  11. with open('3.txt','w') as f_w:
  12.     with open('2.txt','r') as f_r:
  13.         for line in f_r:
  14.             L = re.split(r'\s+',line.strip())
  15.             L[1] = str(int(L[1])+int(D[L[0]][1]))
  16.             f_w.write('{0:<8}{1:<8}{2}\n'.format(L[0],L[1],L[2]))
复制代码

捕获.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-28 11:10:07 From FishC Mobile | 显示全部楼层
DarkmasterSugar 发表于 2018-3-28 10:54
这是什么,矩阵么?还是关系型数据库的2张表?
写个SQL查询就可以了啊

应该是数据库两个文件吧吧  怎么写SQL啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-28 11:15:15 | 显示全部楼层

  D[L[2]] = (L[0],L[1]) 这一步是什么意思啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-28 15:10:34 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-28 15:11:17 | 显示全部楼层

'{0:<8}{1:<8}{2}\n'  还有这个是什么意思啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-28 16:06:44 | 显示全部楼层
有源码都可以自己百度出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-29 09:33:54 | 显示全部楼层
天佑小璐子 发表于 2018-3-28 11:15
D[L[2]] = (L[0],L[1]) 这一步是什么意思啊

读取txt1中的数据构造字典 方便txt2查询
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-29 09:34:36 | 显示全部楼层

格式化输出 这个你需要百度一下 python format
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-29 16:00:39 | 显示全部楼层
yjsx86 发表于 2018-3-29 09:33
读取txt1中的数据构造字典 方便txt2查询

还是没能理解,如果我后面不加第二列,而是把满足条件的对应的txt1的第一列,与原来txt2的第二列相加,怎么改代码?(就是原题加第二列,现在换成加第一列)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-29 17:34:49 From FishC Mobile | 显示全部楼层
天佑小璐子 发表于 2018-3-29 16:00
还是没能理解,如果我后面不加第二列,而是把满足条件的对应的txt1的第一列,与原来txt2的第二列相加,怎 ...

按道理应该只要把L[1] = str(int(L[1])+int(D[L[0]][1]))改成L[1] = str(int(L[1])+int(D[L[0]][0]))就可以,电脑不在身边不知道正确与否。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-17 17:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表