鱼C论坛

 找回密码
 立即注册
查看: 915|回复: 4

[已解决]文件合并

[复制链接]
发表于 2019-12-6 18:24:01 | 显示全部楼层 |阅读模式

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

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

x
有两个文件A和B
文件A如下(中间是Tab键空,而不是空格键)
2        H        11
3        C        22
6        B        33
7        D        44
8        F        55

文件B(中间用空格键分隔)
B cdcdskl dsfdfjs
C dfjsdk dfckds
D lfkjsdv sadjasio
E sldid isadjs
F dkfdfj siadjio
G sdfjdsv saodjks
H odjdcsdk asdjks
如何形成下面的C文件(中间用Tab 键分隔)
2        H        11        odjdcsdk asdjks
3        C        22        dkfdfj siadjio
6        B        33        cdcdskl dsfdfjs
7        D        44        lfkjsdv sadjasio
8        F        55        dkfdfj siadjio
最佳答案
2019-12-6 18:45:15
本帖最后由 阴阳神万物主 于 2019-12-6 19:17 编辑

来看看有没有鱼币。
代码在此:
  1. def merge(a:'文件路径'=r'./A.txt',b:'文件路径'=r'./B.txt',c:'文件路径'=r'./C.txt')->int:
  2.     A = []
  3.     with open(a) as f:#读入A文件的内容
  4.         for line in f:
  5.             line = (line[:-1] if line[-1]=='\n' else line)
  6.             A.append(line.split('\t'))
  7.         #print('调试',A)
  8.     with open(b) as f:#读入B文件的内容,并追加到A列表中每一行的末尾
  9.         for line in f:
  10.             line = line.split()
  11.             #print('调试',line)
  12.             add = ''.join(x+' ' for x in line[1:])
  13.             #print('调试',add)
  14.             for each in A:
  15.                 if each[1] == line[0]:
  16.                     each.append(add[:-1])
  17.                     break
  18.     #print('调试',A)
  19.     with open(c,'w') as f:#逐行写入到C文件中
  20.         for line in A:
  21.             for each in line[:-1]:
  22.                 f.write(each+'\t')
  23.             f.write(line[-1]+'\n')
  24.         f.close()
  25.     return 0
  26. if __name__ == '__main__':
  27.     merge()
复制代码


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-12-6 18:41:48 | 显示全部楼层
鱼币
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-12-6 18:45:15 | 显示全部楼层    本楼为最佳答案   

回帖奖励 +50 鱼币

本帖最后由 阴阳神万物主 于 2019-12-6 19:17 编辑

来看看有没有鱼币。
代码在此:
  1. def merge(a:'文件路径'=r'./A.txt',b:'文件路径'=r'./B.txt',c:'文件路径'=r'./C.txt')->int:
  2.     A = []
  3.     with open(a) as f:#读入A文件的内容
  4.         for line in f:
  5.             line = (line[:-1] if line[-1]=='\n' else line)
  6.             A.append(line.split('\t'))
  7.         #print('调试',A)
  8.     with open(b) as f:#读入B文件的内容,并追加到A列表中每一行的末尾
  9.         for line in f:
  10.             line = line.split()
  11.             #print('调试',line)
  12.             add = ''.join(x+' ' for x in line[1:])
  13.             #print('调试',add)
  14.             for each in A:
  15.                 if each[1] == line[0]:
  16.                     each.append(add[:-1])
  17.                     break
  18.     #print('调试',A)
  19.     with open(c,'w') as f:#逐行写入到C文件中
  20.         for line in A:
  21.             for each in line[:-1]:
  22.                 f.write(each+'\t')
  23.             f.write(line[-1]+'\n')
  24.         f.close()
  25.     return 0
  26. if __name__ == '__main__':
  27.     merge()
复制代码


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

使用道具 举报

发表于 2019-12-6 18:55:36 | 显示全部楼层
  1. f = open('filea.txt')
  2. list1 = list(f)
  3. f . close()
  4. f = open('fileb.txt')
  5. list2 = list(f)
  6. f . close()
  7. f = open('filec.txt' , 'w')
  8. for x in list1:
  9.     a = x . split('\t')[1] . strip()
  10.     for y in list2:
  11.         b = y . split()[0] . strip()
  12.         if a == b:
  13.             f . write(x . strip() + '\t' + y[2:] . strip() + '\n')
  14. f . close()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-6 19:44:44 | 显示全部楼层
本帖最后由 zltzlt 于 2019-12-7 12:00 编辑

代码:

  1. # -*- coding:utf-8 -*-
  2. def func(f1="A.txt", f2="B.txt"):
  3.     """
  4.     功能:合并文件
  5.     参数:
  6.         f1:文件 A 的名字
  7.         f2:文件 B 的名字
  8.     """
  9.     with open(f1) as file1:
  10.         a = file1.readlines()
  11.         text1 = [i[:-1].split("\t") for i in a]

  12.     with open(f2) as file2:
  13.         a = file2.readlines()
  14.         text2 = [i[:-1].split(" ") for i in a]
  15.         text2 = [(i, j + " " + k) for i, j, k in text2]

  16.     print(text1)
  17.     print(text2)

  18.     with open("C.txt", mode="w") as file3:
  19.         for i in text1:
  20.             for j in text2:
  21.                 if i[1] == j[0]:
  22.                     file3.write("\t".join(i) + "\t" + j[1] + "\n")


  23. if __name__ == '__main__':
  24.     func()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 21:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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