diff --git a/pytools/__init__.py b/pytools/__init__.py index 7ccb04adf0bafd136eb0817427d1e517b9bb0092..44b3752d204fa8e39a8e49453fd4234add2e3109 100644 --- a/pytools/__init__.py +++ b/pytools/__init__.py @@ -1561,16 +1561,31 @@ class Table: return "\n".join(lines) - def csv(self): - """Returns a string containing a CSV representation of the table.""" + def csv(self, dialect='excel', **fmtparams): + """Returns a string containing a CSV representation of the table. + + .. doctest :: + + >>> tbl = Table() + >>> tbl.add_row([1, ","]) + >>> tbl.add_row([10, 20]) + >>> print(tbl.csv()) + 1,"," + 10,20 + """ + import csv import io + # Default is '\r\n' + if not 'lineterminator' in fmtparams: + fmtparams['lineterminator'] = '\n' + output = io.StringIO() - writer = csv.writer(output) + writer = csv.writer(output, dialect, **fmtparams) writer.writerows(self.rows) - return output.getvalue().rstrip('\n') + return output.getvalue().rstrip(fmtparams['lineterminator']) def latex(self, skip_lines=0, hline_after=None): if hline_after is None: