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: