簡體   English   中英

迭代地將特定行從CSV文件復制到新文件

[英]Iteratively copy specific rows from CSV file to new file

我有一個大的制表符分隔的csv文件,格式如下:

#mirbase_acc    mirna_name  gene_id gene_symbol transcript_id   ext_transcript_id   mirna_alignment gene_alignment  mirna_start mirna_end   gene_start  gene_end    genome_coordinates  conservation    align_score seed_cat    energy  mirsvr_score

我希望能夠做的是遍歷行並根據“gene_id”字段中的數據(字符串)選擇項目,然后將這些行復制到新文件中。

我是一個蟒蛇菜鳥,並認為這是一個讓我的腳濕潤的好方法,但它比看起來更難! 我一直在嘗試使用csv包來操作文件,使用dictreader和dictwriter讀取和編寫基本的東西。 如果有人可以幫我提出迭代搜索方面的模板,我會非常感激。 到目前為止,我有:

import csv

f = open("C:\Documents and Settings\Administrator\Desktop\miRNA Scripting\mirna_predictions_short.txt", "r")
reader = csv.DictReader(f, delimiter='\t')
writer = open("output.txt",'wb')
writer = csv.writer(writer, delimiter='\t')

然后迭代位,bleurgh:

for row in reader:
    if reader.gene_id == str(CG11710):
        writer.writerow

這顯然不起作用。 關於更好的結構方法的任何想法?

你快到了! 代碼幾乎正確:)


訪問dicts是這樣的:

some_dict['some_key']

代替:

some_object.some_attribute

使用str(...)創建字符串,但使用CG11710CG11710


在你的情況下:

for row in reader:
    if row['gene_id'] == 'CG11710':
        writer.writerow(row)

python中的字典像字典['key']一樣被處理。 所以對你而言,它是讀者['gene_id']。 字符串也用引號“text”聲明,而不是str(text)。 str(text)會嘗試將存儲在變量文本中的內容轉換為字符串,這不是我想要的。 writer.writerow也是一個函數,函數接受參數,所以你需要做writer.writerow(row)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM