Skip to content

Instantly share code, notes, and snippets.

@sloev
Created April 21, 2020 12:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sloev/1625dd0020bb84140afcb2d2cb741ef1 to your computer and use it in GitHub Desktop.
Save sloev/1625dd0020bb84140afcb2d2cb741ef1 to your computer and use it in GitHub Desktop.
how to encode values to csv string in python 3 (args to csv string)
import csv
from io import StringIO
class ArgsToCsv:
def __init__(self, seperator=","):
self.seperator = seperator
self.buffer = StringIO()
self.writer = csv.writer(self.buffer)
def stringify(self, *args):
self.writer.writerow(args)
value = self.buffer.getvalue().strip("\r\n")
self.buffer.seek(0)
self.buffer.truncate(0)
return value + "\n"
from args_to_csv import ArgsToCsv
csv_formatter = ArgsToCsv()
output = ""
header = ["age", "text", "my_array"]
output += csv_formatter.stringify(*header)
output += csv_formatter.stringify(
10,
"""
lol i have some pretty
"freaky"
strings right here \' yo!
""",
[10, 20, 30],
)
output += csv_formatter.stringify(10, "hi there", None)
assert output.splitlines() == [
"age,text,my_array",
'10,"',
" lol i have some pretty",
' ""freaky""',
" strings right here ' yo!",
' ","[10, 20, 30]"',
"10,hi there,",
]
@harisreedhar
Copy link

@sloev Thanks for the snippet. I think you forgot to use separator.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment