鱼C论坛

 找回密码
 立即注册
查看: 1810|回复: 8

[已解决]提取文件某些列的操作

[复制链接]
发表于 2018-4-12 15:40:15 | 显示全部楼层 |阅读模式

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

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

x
假设有个100行,100列,tab分隔的txt1,,,
现在想把其中的某些列提取出来,要求生成一个100行,含所需要列,tab分隔的txt2文件,,,
所需要的列序号已经放进了列表lst中了
最佳答案
2018-4-12 15:57:19
思路:
1 遍历每一行
2 利用字符串的split函数将每一行的数据进行切片
3 根据所需列序号提取该行的元素
4 将这些元素写入txt2文件的一行中
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-4-12 15:57:19 | 显示全部楼层    本楼为最佳答案   
思路:
1 遍历每一行
2 利用字符串的split函数将每一行的数据进行切片
3 根据所需列序号提取该行的元素
4 将这些元素写入txt2文件的一行中
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-12 16:21:51 | 显示全部楼层
pandas可能会派上用场
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-12 16:27:04 | 显示全部楼层
我的文件只有10列(严格用\t分隔),测试可行,用你的文件试试看有没有问题。

  1. f1 = open('t1.txt', 'r')
  2. f2 = open('t2.txt', 'w')

  3. num = [0, 5, 9]
  4. lines = f1.readlines()
  5. for i in lines:
  6.     li = i.strip('\n')  # 去除行尾的换行
  7.     for j in num:
  8.         f2.writelines(li[j*3:j*3+3])
  9.     f2.writelines('\n')

  10. f1.close()
  11. f2.close()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-12 17:33:49 | 显示全部楼层
BngThea 发表于 2018-4-12 15:57
思路:
1 遍历每一行
2 利用字符串的split函数将每一行的数据进行切片

提取该行的所需序列的元素用tab分隔\t,但是写下一行的时候,上下行还要用\n换行,,,你写的思路12我写了,第三句话我写不好
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-12 17:45:24 | 显示全部楼层
graceasyi 发表于 2018-4-12 16:27
我的文件只有10列(严格用\t分隔),测试可行,用你的文件试试看有没有问题。

f2.writelines(li[j*3:j*3+3])  这句话没看明白
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-12 18:13:05 | 显示全部楼层
BngThea 发表于 2018-4-12 15:57
思路:
1 遍历每一行
2 利用字符串的split函数将每一行的数据进行切片

我改好了write的时候 \t一句话   \n一句话,分别写到两个for循环里面 完成
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-13 15:48:39 | 显示全部楼层
天佑小璐子 发表于 2018-4-12 17:45
f2.writelines(li[j*3:j*3+3])  这句话没看明白

哦,这句错了~有问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-13 21:19:54 | 显示全部楼层
f_allnames = open(r'C:\Users\Administrator\Desktop\BLCA.clin.merged.txt','r')
f_write = open(r'C:\Users\Administrator\Desktop\BLCA.clin.write.txt','a')
for line in f_allnames:
    L = re.split(r'\s+',line.strip())
    for i in lst:                           
        f_write.writelines('%s\t,' % L[i])
    f_write.writelines('\n')
f_allnames.close()
f_write.close()
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-10 13:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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