鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖

求高手求高手求高手---按规律合并三个文件

[复制链接]
 楼主| 发表于 2016-2-18 20:31:54 | 显示全部楼层
hldh214 发表于 2016-2-18 16:53
origin target 是两个列表, 用for迭代出了each 传入两个列表, 你那个不行是因为换行符, 你给每个文件末尾 ...

但是这个输出的结果,跟我题目要的结果不一样
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-2-18 20:33:10 | 显示全部楼层
冬天的哈根达斯 发表于 2016-2-18 20:31
但是这个输出的结果,跟我题目要的结果不一样

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-2-19 10:05:18 | 显示全部楼层
把题目简化了一下,文件改为列表。
另零值没有改为'.'
  1. list1 = [['a1', 11, 'A', 0,286],
  2.          ['a1', 21, 'CG', 13, 44],
  3.          ['a1', 23, 'C', 52, 15],
  4.          ['a1', 24, 'AG', 68, 14],
  5.          ['a1', 36, 'AG', 59, 12]]
  6. list2 = [['a1', 11, 'A', 0, 130],
  7.          ['a1', 21, 'CG', 13, 47],
  8.          ['a1', 23, 'C', 47, 12],
  9.          ['a1', 24, 'AG', 35, 20],
  10.          ['a1', 32, 'C', 38, 41],
  11.          ['a1', 33, 'A', 81, 13],
  12.          ['a1', 36, 'AG', 65, 18],
  13.          ['a1', 37, 'CT', 72, 11]]
  14. list3 = [['a1', 11, 'A', 0, 264],
  15.          ['a1', 21, 'CG', 37, 23],
  16.          ['a1', 32, 'C', 34, 29],
  17.          ['a1', 33, 'A', 51, 14],
  18.          ['a1', 34, 'CT', 54, 7],
  19.          ['a1', 36, 'AG', 54, 6]]
  20. list4 = []
  21. j = 0
  22. for i in range(100):#假定列表第二列的范围在此之内
  23.     if i in list(zip(*list1))[1] or i in list(zip(*list2))[1] or i in list(zip(*list3))[1]:
  24.         #判断i是否在三个列表的第二列中,list(zip(*list1))是将列表转置
  25.         list4.append([])
  26.         list4[j].extend(['a1', i])
  27.         for l1 in list1:
  28.             if i == l1[1]:
  29.                 list4[j].extend(l1[2:])
  30.                 break
  31.         else:
  32.             list4[j].extend(['.', '.', '.'])
  33.         for l2 in list2:
  34.             if i == l2[1]:
  35.                 list4[j].extend(l2[2:])
  36.                 break
  37.         else:
  38.             list4[j].extend(['.', '.', '.'])
  39.         for l3 in list3:
  40.             if i == l3[1]:
  41.                 list4[j].extend(l3[2:])
  42.                 break
  43.         else:
  44.             list4[j].extend(['.', '.', '.'])
  45.         j += 1
  46. for i in list4:
  47.     print(i)
复制代码


输出
  1. ['a1', 11, 'A', 0, 286, 'A', 0, 130, 'A', 0, 264]
  2. ['a1', 21, 'CG', 13, 44, 'CG', 13, 47, 'CG', 37, 23]
  3. ['a1', 23, 'C', 52, 15, 'C', 47, 12, '.', '.', '.']
  4. ['a1', 24, 'AG', 68, 14, 'AG', 35, 20, '.', '.', '.']
  5. ['a1', 32, '.', '.', '.', 'C', 38, 41, 'C', 34, 29]
  6. ['a1', 33, '.', '.', '.', 'A', 81, 13, 'A', 51, 14]
  7. ['a1', 34, '.', '.', '.', '.', '.', '.', 'CT', 54, 7]
  8. ['a1', 36, 'AG', 59, 12, 'AG', 65, 18, 'AG', 54, 6]
  9. ['a1', 37, '.', '.', '.', 'CT', 72, 11, '.', '.', '.']
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-24 10:21:31 | 显示全部楼层
冬雪雪冬 发表于 2016-2-19 10:05
把题目简化了一下,文件改为列表。
另零值没有改为'.'

几天没来了,刚看到,十分感谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-26 11:04:26 | 显示全部楼层
本帖最后由 冬天的哈根达斯 于 2016-2-26 11:33 编辑
冬雪雪冬 发表于 2016-2-19 10:05
把题目简化了一下,文件改为列表。
另零值没有改为'.'


文件1.txt内容如下:                              
a1,11,A , 0 ,286
a1,21,CG,13,44
a1,23,C,52,15
a1,24,AG,68,14
a1,36,AG,59,12

list1 = [['a1', 11, 'A', 0,286],
         ['a1', 21, 'CG', 13, 44],
         ['a1', 23, 'C', 52, 15],
         ['a1', 24, 'AG', 68, 14],
         ['a1', 36, 'AG', 59, 12]]
如何把1.txt的文件输入成list1.
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-2-26 11:31:04 | 显示全部楼层
本帖最后由 冬雪雪冬 于 2016-2-26 11:33 编辑
冬天的哈根达斯 发表于 2016-2-26 11:04
文件1.txt内容如下:                              
a        b        c        d        e
a1      ...


你看看这个行不行,不过数字也当成了字符串。
  1. f1 = open('1.txt')
  2. list1 = []
  3. j = 0
  4. for i in f1:
  5.     list1.append([])
  6.     i = i.strip('\n')
  7.     list1[j] = i.split()
  8.     j += 1
  9. f1.close()
复制代码


结果:
  1. [['a', 'b', 'c', 'd', 'e'], ['a1', '1', 'A', '0', '286'], ['a1', '2', 'CG', '13', '44'], ['a1', '3', 'C', '52', '15'], ['a1', '4', 'AG', '68', '14'], ['a1', '6', 'AG', '59', '12']]
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-26 11:41:41 | 显示全部楼层
冬雪雪冬 发表于 2016-2-26 11:31
你看看这个行不行,不过数字也当成了字符串。

我修改了一下问题,然后用你的方法不行,麻烦你再看看
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-2-26 13:42:56 | 显示全部楼层
冬天的哈根达斯 发表于 2016-2-26 11:41
我修改了一下问题,然后用你的方法不行,麻烦你再看看

只需把07行改为:
  1.     list1[j] = i.split(',')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-1 14:03:11 | 显示全部楼层

文件1.txt内容如下:
chr1,69511,A,G,0,286,G/G,7679.77,
chr1,861368,CG,C,13,44,CG/C,1143.73,
chr1,861376,C,CG,52,15,C/CG,113.73,
chr1,861461,AG,A,68,14,AG/A,19.78,
chr1,865773,AG,A,59,12,AG/A,242.73,
chr1,871288,AG,A,11,9,AG/A,75.73,
chr1,871334,G,T,18,26,G/T,775.77,
chr1,874412,TC,T,11,9,TC/T,94.73,
chr1,874519,TG,T,41,8,TG/T,17.8,
chr1,874553,G,GA,7,4,G/GA,11.08,
chr1,874769,AC,A,11,8,AC/A,107.73,
chr1,876480,AG,A,10,6,AG/A,54.73,
chr1,876499,A,G,0,11,G/G,189.77,
chr1,876565,AG,A,2,5,AG/A,41.74,
chr1,876647,AG,A,107,22,AG/A,70.73,
chr1,877715,C,G,0,7,G/G,113.81,
chr1,878445,A,AC,72,20,A/AC,51.73,
############################################################################################分割线
x1 = open('F:/1.txt').readlines()

lis1= [ ]
j = 0

for i in x1:
    lis1.append([ ])
    i = i.strip('\n')
    lis1[j] = i.split(',')
    j += 1

   
for i in lis1:              #我想在这里面直接用lis1可不可以?
    print(i[1])
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-19 18:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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