python - 使用 tsv 文件中的列 - python 3
问题描述
我有一个 tsv 文件分成列,我需要从中选择特定的列并将它们写入一个新文件(基本上是过滤原始文件)。根据包含在单独列表中的标题选择列。我设法找到了相关列的索引,但由于某种原因,我无法让它们正确写入新文件。
with open ("some_file.txt", "w") as out_file, open("another_file.txt", "r") as in_file:
first_line = True
for line in in_file:
line = line.rstrip("\n")
line = line.split("\t")
if first_line:
column_indices = [x for x in range(len(line)) if line[x] in [some_list]
first_line = False
如果我手动插入索引 (out_file.write(line[7] + "\n") 会打印正确的列,但我尝试过的循环/列表组合类型没有适用于所有索引。我唯一的方法'已经设法将所有相关内容写在标题后面的行中,而不是每个标题下的列中。
我是python的初学者,因此感谢您提供任何帮助/见解!
解决方案
Python 与csv模块一起打包,其中包含为您的用例设计的DictReader和DictWriter类。无需重新发明轮子:
输入.tsv:
col1 col2 col3 col4 col5
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
Python:
import csv
with open('input.tsv','r',newline='') as fin,open('output.tsv','w',newline='') as fout:
reader = csv.DictReader(fin,delimiter='\t')
writer = csv.DictWriter(fout,delimiter='\t',fieldnames=['col2','col3','col4'],extrasaction='ignore')
writer.writeheader()
for row in reader:
writer.writerow(row)
输出.tsv:
col2 col3 col4
2 3 4
3 4 5
4 5 6
5 6 7
推荐阅读
- javascript - 即使为 Google Maps Geolocation API 启用了所有 API,也获得“REQUEST_DENIED”
- javascript - 如何将 localStorage 中的数据添加到输入框中?
- apache - 如何更改 htaccess 上的根文件
- matlab - 为什么旋转 3D 点云后顶点法线会翻转?
- android - How to read json file from path using kotlin
- r - 增加R中子图标题的字体大小?
- java - 在 Android 中调用隐藏的 API,例如“createCustomCaptureSession”
- html - 如何在 IE 的列中显示 ul 列表?
- python - 将 Numpy 索引数组与 Numba DeviceNDArray 一起使用
- google-cloud-platform - Google Cloud Run 的默认存储空间是什么?