Within this short tutorial we will show you the steps required to create a csv file that includes multi-line cells within Python. In order to create a mutliline cell within Excel [2010/2013] the following is required: One of the great
things with the Python csv module is it takes care of the quotes for you. Below provides an example, import csv multiline_string = "this\nis\nsome\ntext" # assign string with open['xyz.csv', 'wb'] as outfile: Here is our hand-picked selection of the best courses you can find online:#!/usr/bin/env python2.7
multiline_string = multiline_string.replace['\n','\r\n'] # convert newlines to newlines+carriage return
w = csv.writer[outfile] # assign csv writer method
w.writerow[['sometext',multiline_string]] # append/write row to fileWant to become a programming expert?
Python Zero to Hero course
Python Pro Bootcamp
Bash Scripting and Shell Programming course
Automate with Shell Scripting course
The Complete Web Development Bootcamp course
and our
recommended certification practice exams:
AlphaPrep Practice Tests - Free Trial
Hi I am using this method to write a csv file from a csv file which is a hashed code but i only receive the last row in output, how can i add each row to the previous one?
import hashlib
import csv
d = dict[]
result = []
for i in range[0 , 9999] :
n = hashlib.sha256[str[i].encode[]]
d[n.hexdigest[]] = str[i]
with open['/Users/MJ-Mac/Desktop/karname.txt'] as f:
file = csv.reader[f]
for row in file :
a = row[0]
b = d[row[1]]
result = [a , b]
with open['/Users/MJ-Mac/Desktop/result3.txt', 'w'] as f2:
file2 = csv.writer[f2]
file2.writerow[result]
asked Nov 26, 2021 at 17:32
3
Other answers have suggested replacing 'w'
with 'a'
, this is not necessary when working with csv.writer
. It also could make your file grow everytime you run the program.
Instead of reopening and closing relut3.txt, keep it open and use just one writer
import hashlib
import csv
d = dict[]
result = []
for i in range[0 , 9999] :
n = hashlib.sha256[str[i].encode[]]
d[n.hexdigest[]] = str[i]
with open['/Users/MJ-Mac/Desktop/result3.txt', 'w'] as result_file:
result_writer = csv.writer[result_file] # only create this once
with open['/Users/MJ-Mac/Desktop/karname.txt'] as f:
file = csv.reader[f]
for row in file :
a = row[0]
b = d[row[1]]
result = [a , b]
result_writer.writerow[result] # use the already created writer
answered Nov 26, 2021 at 17:42
Scrapper142Scrapper142
5011 gold badge3 silver badges10 bronze badges
Your code is writing one line to the file, then it opens the file again and writes the next line as the full content of the program. So on the second run through the loop only the second line will be in the file.
import hashlib
import csv
d = dict[]
result = []
for i in range[0 , 9999] :
n = hashlib.sha256[str[i].encode[]]
d[n.hexdigest[]] = str[i]
with open['/Users/MJ-Mac/Desktop/karname.txt'] as f:
file = csv.reader[f]
for row in file :
a = row[0]
b = d[row[1]]
result = [a , b]
with open['/Users/MJ-Mac/Desktop/result3.txt', 'a'] as f2:
file2 = csv.writer[f2]
file2.writerow[result]
It might be better to open the file and then write everything to it:
import hashlib
import csv
d = dict[]
result = []
for i in range[0 , 9999] :
n = hashlib.sha256[str[i].encode[]]
d[n.hexdigest[]] = str[i]
with open['/Users/MJ-Mac/Desktop/karname.txt'] as f:
file = csv.reader[f]
with open['/Users/MJ-Mac/Desktop/result3.txt', 'w'] as f2:
file2 = csv.writer[f2]
for row in file :
a = row[0]
b = d[row[1]]
result = [a , b]
file2.writerow[result]
answered Nov 26, 2021 at 17:35
jhylandsjhylands
8548 silver badges15 bronze badges
I can't run this myself, since your data is not included.
However, I think your problem is that with open['/Users/MJ-Mac/Desktop/result3.txt', 'w']
has the "w" flag -- which stands for "write" -- so your data is being overwritten, You might instead need the "a" flag for "append," so that each line will be appended to the data you are exporting.
import hashlib
import csv
d = dict[]
result = []
for i in range[0 , 9999] :
n = hashlib.sha256[str[i].encode[]]
d[n.hexdigest[]] = str[i]
with open['/Users/MJ-Mac/Desktop/karname.txt'] as f:
file = csv.reader[f]
for row in file :
a = row[0]
b = d[row[1]]
result = [a , b]
with open['/Users/MJ-Mac/Desktop/result3.txt', 'a'] as f2:
file2 = csv.writer[f2]
file2.writerow[result]
answered Nov 26, 2021 at 17:35
genericgeneric
1851 silver badge13 bronze badges
It is easier and more readable to open both the input and output files at once, and initialise the CSV reader and writer at the start:
with open['/Users/MJ-Mac/Desktop/karname.txt'] as in_file, open['/Users/MJ-Mac/Desktop/result3.txt', 'w'] as out_file:
output = csv.writer[out_file]
for row in csv.reader[in_file]:
output.writerow[[row[0], d[row[1]]]
answered Nov 26, 2021 at 17:46
StuartStuart
8,6981 gold badge18 silver badges30 bronze badges