我有一个非常大的 tsv 文件,需要删除几列。我找到了 CSV 模块,并找到了一个类似问题的答案(参见下面的脚本)。然而,我需要删除大量列,并且不想键入要删除的每列的每个索引。即从具有 689513 列的文件中,我想删除第 628715 到 650181 列,也想删除第 653321 到 689513 列。(如果删除这两组太难,我可以只删除最后一组,即653321 到 689613,或等效的 653321 到文件末尾)。对不起,基本问题;我是脚本新手并且迷路了......并且CSV模块页面没有详细介绍删除列范围。我尝试在 R 中执行此操作,但第一个单元格条目为空白(请参见代码下方的示例列表)。我的文件是一个 tsv 制表符分隔文件,但我认为可以使用命令将分隔符设置为 \t 来纠正它。任何帮助是极大的赞赏!!!(注意:不幸的是,我的列名中需要有冒号,即 2L:1274 完全是一列的名称)。
import csv
with open("source","rb") as source:
rdr= csv.reader( source )
with open("result","wb") as result:
wtr= csv.writer( result )
for r in rdr:
wtr.writerow( (r[0], r[1], r[3], r[4]) )
2L:1274 2L:2425 2L:2853 3L:4 3L:5 3L:7
indivBCsusceptiblePL7A10_TATAGT NA NA NA NA NA NA
indivBCsusceptiblePL7A11_CCTGAA NA 5 NA NA NA NA
indivBCsusceptiblePL7A12_CAATAT NA NA 6 7 8 9
indivBCsusceptiblePL7A1_CCGAAT NA NA NA NA NA NA