write output of for loop in csv python
i want to write the result of for loop which is PMID = Id of litrature ,Date = date of publication ,title = title of article,Abstract = abtract of artilce in csv file but it is saving only one element of the output no all
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()
python
add a comment |
i want to write the result of for loop which is PMID = Id of litrature ,Date = date of publication ,title = title of article,Abstract = abtract of artilce in csv file but it is saving only one element of the output no all
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()
python
Because you open the file in write mode in a loop, which wipes any contents from the previous loop. Open in append mode (though this will be really inefficient and you'll probably want to refactor the code to be able to usewriterows
and open the file only once)
– roganjosh
Jan 2 at 22:17
add a comment |
i want to write the result of for loop which is PMID = Id of litrature ,Date = date of publication ,title = title of article,Abstract = abtract of artilce in csv file but it is saving only one element of the output no all
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()
python
i want to write the result of for loop which is PMID = Id of litrature ,Date = date of publication ,title = title of article,Abstract = abtract of artilce in csv file but it is saving only one element of the output no all
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()
python
python
asked Jan 2 at 22:11
Shayez KarimShayez Karim
63
63
Because you open the file in write mode in a loop, which wipes any contents from the previous loop. Open in append mode (though this will be really inefficient and you'll probably want to refactor the code to be able to usewriterows
and open the file only once)
– roganjosh
Jan 2 at 22:17
add a comment |
Because you open the file in write mode in a loop, which wipes any contents from the previous loop. Open in append mode (though this will be really inefficient and you'll probably want to refactor the code to be able to usewriterows
and open the file only once)
– roganjosh
Jan 2 at 22:17
Because you open the file in write mode in a loop, which wipes any contents from the previous loop. Open in append mode (though this will be really inefficient and you'll probably want to refactor the code to be able to use
writerows
and open the file only once)– roganjosh
Jan 2 at 22:17
Because you open the file in write mode in a loop, which wipes any contents from the previous loop. Open in append mode (though this will be really inefficient and you'll probably want to refactor the code to be able to use
writerows
and open the file only once)– roganjosh
Jan 2 at 22:17
add a comment |
1 Answer
1
active
oldest
votes
You are opening the file, writing and closing it inside the loop (the with
makes sure the file is closed after the with's scope is done) so it is replacing the previous file for each element in the loop.
Try opening the file only once, before the loop:
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)
add a comment |
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54013847%2fwrite-output-of-for-loop-in-csv-python%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You are opening the file, writing and closing it inside the loop (the with
makes sure the file is closed after the with's scope is done) so it is replacing the previous file for each element in the loop.
Try opening the file only once, before the loop:
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)
add a comment |
You are opening the file, writing and closing it inside the loop (the with
makes sure the file is closed after the with's scope is done) so it is replacing the previous file for each element in the loop.
Try opening the file only once, before the loop:
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)
add a comment |
You are opening the file, writing and closing it inside the loop (the with
makes sure the file is closed after the with's scope is done) so it is replacing the previous file for each element in the loop.
Try opening the file only once, before the loop:
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)
You are opening the file, writing and closing it inside the loop (the with
makes sure the file is closed after the with's scope is done) so it is replacing the previous file for each element in the loop.
Try opening the file only once, before the loop:
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)
answered Jan 2 at 22:21
solarcsolarc
4,26923149
4,26923149
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54013847%2fwrite-output-of-for-loop-in-csv-python%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Because you open the file in write mode in a loop, which wipes any contents from the previous loop. Open in append mode (though this will be really inefficient and you'll probably want to refactor the code to be able to use
writerows
and open the file only once)– roganjosh
Jan 2 at 22:17