Запись вывода Biopython в CSV - PullRequest
0 голосов
/ 01 мая 2018

В настоящее время я работаю над проектом класса, который требует от меня извлечения данных с веб-сайта NCBI с использованием биопиона и записи его в файл CSV, который я затем анализирую в R. Я получил все необходимые данные, но я не полностью уверен, как записать это в файл CSV, так как мы никогда не покрывали это в классе. Вот мой код:

from Bio import Entrez, Medline

Entrez.email = "email.here"

handle = Entrez.esearch(db="pubmed",  # database to search
                        term="Chan CS[Author] AND 2000:2017[Date - Publication]",  # search term
                        retmax=200 # Maximum number of results to return
                        )
record = Entrez.read(handle)
handle.close()

pmid_list = record["IdList"]
print(pmid_list)

Вслед за

from Bio import Medline
handle = Entrez.efetch(db="pubmed", id=pmid_list, rettype="medline", retmode="text")
records = Medline.parse(handle)

journal_dict = []
datep_dict = []
place_dict = []
for record in records:

    # retrieve journal titles 
    title = record['JT']
    journal_dict.append(title)

    #retrieve date published
    date = record['DP']
    datep_dict.append(date)

    #retrieve place published
    place = record['PL']
    place_dict.append(place)
# Close the efetch handle    
handle.close()

for title in journal_dict:
    print(title)
for date in datep_dict:
    print(date)
for place in place_dict:
    print(place)

И, наконец, часть, на которой я застрял

import csv

Я пытаюсь заставить файл csv выглядеть примерно так:

[ID, Journal Title, Publication Date, Place of Publication]
[123, Title1, Date1, Place1]
[124, Title2, Date2, Place2]

Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 02 мая 2018

Во втором блоке кода имена ваших переменных говорят о dict ионариях, но на самом деле они list s:

journal_dict = []
datep_dict = []
place_dict = []

Итак, давайте исправим это (это также будет полезно позже при записи в CSV):

record_list = []
for record in records:
    record_dict = {'ID': record['ID'],
                   'Journal Title': record['JT'],
                   'Publication Date': record['DP']
                   'Place of Publication': record['PL']}
    record_list.append(record_dict)

Теперь давайте запишем этот список словарей в файл CSV

import csv

with open('medline.csv', 'w', newline='') as csvfile:
    fieldnames = ['ID', 'Journal Title', 'Publication Date', 'Place of Publication']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

    writer.writeheader()
    for record_dict in record_list:
        writer.writerow(record_dict)
...