在Python中读取带有附加分隔符的输入文件

2024-09-28 01:30:26 发布

您现在位置:Python中文网/ 问答频道 /正文

lst = ['>CW500.8     \n', 'ATGCTATCATTA\n', '>CW500.9     \n', 'ATGCTATCATTA\n', '>CW500.10    \n', 'ATGCTATCATTT\n', '\n', '$$$\n', '\n', '>WT    \n', 'GTGCTATCATTA '] #Fastq formatted file
orgs = []
seqlist1 = []
seqstring = ""

for line in lst:
    if line.startswith(">"):
        if seqstring != "":
            seqlist1.append(seqstring) #makes the sequence a list
            seqstring = ""
        orgs.append(line.rstrip("\n")) #makes >indv's keys
    else:
        seqstring += line.rstrip("\n") #adds the seq string to the list
seqlist1.append(seqstring)  #must do this or your last line is lost

Output :  ['ATGCTATCATTA', 'ATGCTATCATTA', 'ATGCTATCATTT$$$', 'GTGCTATCATTA ']

我需要更改输出,以便将“$$$”后面的读取附加到新列表中。所以我修改了上面的代码:

orgs = []
seqlist1 = []
seqlist2 = []
seqstring = ""

for line in lst:
    if line.startswith(">"):
        if seqstring != "":
            seqlist1.append(seqstring) #makes the sequence a list
            seqstring = ""
    orgs.append(line.rstrip("\n")) #makes >indv's keys
    else:
        seqstring += line.rstrip("\n") #adds the seq string to the list   
    elif line.startswith("$$$"):
        seqlist2.append(seqstring)
seqlist1.append(seqstring)#must do this or your last line is lost
seqlist2.append(seqstring) 

print seqlist1
print seqlist2

Output:  File "/tmp/execpad-49ffac3cc5b6/source-49ffac3cc5b6", line 15
elif line.startswith("$$$"):
   ^
SyntaxError: invalid syntax

Expected Output:
['ATGCTATCATTA', 'ATGCTATCATTA', 'ATGCTATCATTT']
['GTGCTATCATTA']

有人能告诉我哪里出了问题,我怎样才能进一步修改代码以获得所需的输出吗?你知道吗


Tags: theiflinelistmakesappendlstorgs
2条回答
lst = ['>CW500.8     \n', 'ATGCTATCATTA\n', '>CW500.9     \n', 'ATGCTATCATTA\n', '>CW500.10    \n', 'ATGCTATCATTT\n', '\n', '$$$\n', '\n', '>WT    \n', 'GTGCTATCATTA '] #Fastq formatted file
new_list = []

def word_lister(list):
    for line in list:
        stripped = line.strip()
        replaced = stripped.replace(" ", "")
        if replaced.isalpha():
            new_list.append(replaced)
    # this is to print it
    for new in new_list:
        print(new)
    # this will return a array
    return new_list

word_lister(lst)

我只是把它包装成一个函数。它将拿走你的列表,并将删除/替换空白。然后通过.isalpha()检查它是否是字母。我还将输出附加到一个新数组中以返回它,或者您可以只使用打印的输出。你知道吗

您有一个elif,前面没有相应的if。这在Python语法中是不允许的。你知道吗

相关问题 更多 >

    热门问题