簡體   English   中英

Python打印.psl格式,不帶引號和逗號

[英]Python print .psl format without quotes and commas

我正在使用python3的Linux系統上使用遺傳學通用的.psl格式的文件。 這是一個制表符分隔的文件,其中包含一些帶有逗號分隔值的單元格。 下面是一個帶有.psl某些功能的小示例文件。

input.psl

1 2 3 x read1 8,9, 2001,2002,
1 2 3 mt read2 8,9,10 3001,3002,3003
1 2 3 9 read3 8,9,10,11 4001,4002,4003,4004
1 2 3 9 read4 8,9,10,11 4001,4002,4003,4004

我需要過濾該文件以僅提取感興趣的區域。 在這里,我僅提取第四列中值為9的行。

import csv

def read_psl_transcripts():
    psl_transcripts = []
    with open("input.psl") as input_psl:
        csv_reader = csv.reader(input_psl, delimiter='\t')
        for line in input_psl:
        #Extract only rows matching chromosome of interest
        if '9' == line[3]:
            psl_transcripts.append(line)
    return psl_transcripts

然后,我需要能夠以制表符分隔的格式來打印或寫入這些選定的行,該格式與輸入文件的格式匹配,而無需添加其他引號或逗號。 我似乎無法正確理解此部分,並且總是添加其他括號,引號和逗號。 下面是使用print()的嘗試。

outF = open("output.psl", "w")
for line in read_psl_transcripts():
    print(str(line).strip('"\''), sep='\t')

任何幫助深表感謝。 以下是所需的輸出。

1 2 3 9 read3 8,9,10,11 4001,4002,4003,4004
1 2 3 9 read4 8,9,10,11 4001,4002,4003,4004

您可能可以通過簡單的awk語句解決您的問題。

awk '$4 == 9' input.pls > output.pls

但是使用python可以這樣解決:

write_pls = open("output.pls", "w")

with open("input.pls") as file:
    for line in file:
        splitted_line = line.split()
        if splitted_line[3] == '9':
            out_line = '\t'.join(splitted_line)
            write_pls.write(out_line + "\n")

write_pls.close()

暫無
暫無

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

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