使用csv read返回列表

2024-05-16 09:10:17 发布

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

这是我的密码。如果我打印变量,效果很好,但是如果我返回变量并尝试在其他地方打印它们,则只打印最后一个元素。你知道吗

def train_data(fname):

    #load csv training files
    with open (fname) as train:
        reader = csv.DictReader(train, delimiter='\t')
        for row in reader:
            peptide=[row['peptide']]
            allele=[row['allele']]
            score=[row['score']]
            #print(peptide, score, allele)
    return [peptide, allele, score]

这是我的csv文件:

peptide score   allele  
AAAGAEAGKATTEEQ 0.190842    DRB1_0101
AAAGAEAGKATTEEQ 0.006301    DRB1_0301
AAAGAEAGKATTEEQ 0.066851    DRB1_0401
AAAGAEAGKATTEEQ 0.006344    DRB1_0405
AAAGAEAGKATTEEQ 0.035130    DRB1_0701
AAAGAEAGKATTEEQ 0.006288    DRB1_0802
AAAGAEAGKATTEEQ 0.176268    DRB1_0901
AAAGAEAGKATTEEQ 0.042555    DRB1_1101
AAAGAEAGKATTEEQ 0.114855    DRB1_1302
AAAGAEAGKATTEEQ 0.006377    DRB1_1501
AAAGAEAGKATTEEQ 0.006296    DRB3_0101
AAAGAEAGKATTEEQ 0.006313    DRB4_0101
AAAGAEAGKATTEEQ 0.070413    DRB5_0101

我试着把它印成这样:

if __name__=='__main__':
   p, a, s = train_data('sample.txt')
   print(s)

Tags: csv密码data地方trainfnamereaderrow
3条回答

打印变量s将只打印分数变量。你知道吗

尝试:

print(p, a, s)

如果您希望输出看起来像上面的csv文件:

print(zip(p, a, s))

你必须使肽、等位基因、得分在With范围外可见,否则你将始终得到[None,None,None]数组:

 def train_data(fname):

    #load csv training files
    peptide= []
    allele= []
    score = []
    with open (fname) as train:
        reader = csv.DictReader(train, delimiter='\t')
        for row in reader:
            peptide.append(row['peptide'])
            allele.append(row['allele'])
            score.append(row['score'])

    return [peptide, allele, score]

我猜你不想要[row['allele']]语句。你知道吗

现在可以了!你知道吗

你只归还一件东西。尝试将内容放入列表并返回列表:

def train_data(fname):
    peptides = []
    alleles = []
    scores = []

    #load csv training files
    with open (fname) as train:
        reader = csv.DictReader(train, delimiter='\t')
        for row in reader:
            peptides.append(row['peptide'])
            alleles.append(row['allele'])
            scores.append(row['score'])

    return peptides, alleles, scores

编辑

根据您在__main__中的用法,我修改了代码以返回三个不同的列表。你知道吗

相关问题 更多 >