繁体   English   中英

在csv python中写入for循环的输出

[英]write output of for loop in csv python

我想写for循环的结果,它是PMID =文本ID,日期=发布日期,标题=文章标题,摘要=摘要在csv文件中,但是它只保存输出的一个元素,不是全部

  import numpy as np 
  from Bio import Entrez
  from Bio import Medline
  import csv
  import pandas as pd
  Entrez.email = "shayezkarimcide@gmail.com"

  handle = Entrez.esearch(db="pmc", 
        term = "Antimicrobial resistance Drug Resistance",
        rettype = "medline",retmode = "txt",
        retmax= "200",sort = "pub date")

  result = Entrez.read(handle)

  handle.close()

  Id = result ['IdList']

  print (Id)

  handle2 = Entrez.efetch(db="pmc", 
    id=Id, rettype="medline", 
    retmode="text")

  records = Medline.parse(handle2)


  header = ['ID','Date','Title','Abstract']



  for result in records :

   PMID = result['PMID']
   Abstract = result['AB']
   title = result['TI']
   Date = result['DP']

   print (PMID,Date,title,Abstract)


   fields = [PMID, title,Date,Abstract]

   rows = [PMID,Date,title,Abstract]

   with open ('/home/shayez/Desktop/karim.csv','wt') as csvfile:
      writer = csv.writer(csvfile, delimiter ="\t" )
      writer.writerow(header)

      writer.writerow(rows)

  handle2.close()

您正在打开文件,在循环中写入和关闭文件( with确保在with的作用域完成后关闭文件),因此它将为循环中的每个元素替换先前的文件。

尝试在循环之前仅打开一次文件:

with open ('/home/shayez/Desktop/karim.csv','wt') as csvfile:
    writer = csv.writer(csvfile, delimiter ="\t" )
    writer.writerow(header)

    for result in records :
        PMID = result['PMID']
        Abstract = result['AB']
        title = result['TI']
        Date = result['DP']

        print (PMID,Date,title,Abstract)

        fields = [PMID, title,Date,Abstract]
        rows = [PMID,Date,title,Abstract]

        writer.writerow(rows)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM