def format_table(table, format='csv', outputstream=sys.stdout, **extra_options): """table can be a table from dict_to_table() or a dictionary. The dictionary can have either a single value as a key (for a one-dimensional table) or 2-tuples (for two-dimensional tables). format is currently one of csv, tsv, tex, texbitmap, or asciiart. Values for texbitmap should be floats between 0 and 1 and the output will be the TeX code for a large-pixeled bitmap.""" if isinstance(table, dict): table = dict_to_table(table) if format in ('csv', 'tsv'): import csv dialect = {'csv': csv.excel, 'tsv': csv.excel_tab}[format] writer = csv.writer(outputstream, dialect=dialect) for row in table: writer.writerow(row) elif format == 'tex': import TeXTable print >> outputstream, TeXTable.texify(table, has_header=True) elif format == 'texbitmap': import TeXTable extra_options.setdefault('has_header', True) print >> outputstream, TeXTable.make_tex_bitmap(table, **extra_options) elif format == 'asciiart': from texttable import Texttable texttable = Texttable(**extra_options) texttable.add_rows(table) print >> outputstream, texttable.draw() else: raise ValueError("Unsupported format: %r (supported formats: %s)" % \ (format, ' '.join(supported_formats)))
def format_table(table, format='csv', outputstream=sys.stdout, **extra_options): """table can be a table from dict_to_table() or a dictionary. The dictionary can have either a single value as a key (for a one-dimensional table) or 2-tuples (for two-dimensional tables). format is currently one of csv, tsv, tex, texbitmap, or asciiart. Values for texbitmap should be floats between 0 and 1 and the output will be the TeX code for a large-pixeled bitmap.""" if isinstance(table, dict): table = dict_to_table(table) if format in ('csv', 'tsv'): import csv dialect = {'csv' : csv.excel, 'tsv' : csv.excel_tab}[format] writer = csv.writer(outputstream, dialect=dialect) for row in table: writer.writerow(row) elif format == 'tex': import TeXTable print >>outputstream, TeXTable.texify(table, has_header=True) elif format == 'texbitmap': import TeXTable extra_options.setdefault('has_header', True) print >>outputstream, TeXTable.make_tex_bitmap(table, **extra_options) elif format == 'asciiart': from texttable import Texttable texttable = Texttable(**extra_options) texttable.add_rows(table) print >>outputstream, texttable.draw() else: raise ValueError("Unsupported format: %r (supported formats: %s)" % \ (format, ' '.join(supported_formats)))
def format_table(table, format='csv', outputstream=sys.stdout, **extra_options): """table can be a table from dict_to_table() or a dictionary. The dictionary can have either a single value as a key (for a one-dimensional table) or 2-tuples (for two-dimensional tables). format is currently one of csv, tsv, tex, texbitmap, or asciiart. Values for texbitmap should be floats between 0 and 1 and the output will be the TeX code for a large-pixeled bitmap. For format='texbitmap', you can pass the option has_header=True to make the first row look like a header. If format='asciiart', you can pass the option center=True. Remaining extra_options are typically passed along to the actual renderers.""" if isinstance(table, dict): table = dict_to_table(table) if format in ('csv', 'tsv'): import csv dialect = {'csv': csv.excel, 'tsv': csv.excel_tab}[format] writer = csv.writer(outputstream, dialect=dialect) for row in table: writer.writerow(row) elif format == 'tex': import TeXTable print >> outputstream, TeXTable.texify(table, has_header=True) elif format == 'texbitmap': import TeXTable extra_options.setdefault('has_header', True) print >> outputstream, TeXTable.make_tex_bitmap(table, **extra_options) elif format == 'asciiart': from texttable import Texttable center = extra_options.pop('center', False) deco = extra_options.pop('deco', None) texttable = Texttable(**extra_options) if deco is not None: deco = getattr(Texttable, deco.upper()) texttable.set_deco(deco) num_cols = len(table[0]) texttable.set_cols_dtype(['t'] * num_cols) texttable.add_rows(table) if center: texttable.set_cols_align(['l'] + ['c'] * (num_cols - 1)) print >> outputstream, texttable.draw() elif format == 'tabulate': from tabulate import tabulate extra_options.setdefault('headers', 'firstrow') extra_options.setdefault('tablefmt', 'simple') print >> outputstream, tabulate(table, **extra_options) else: raise ValueError("Unsupported format: %r (supported formats: %s)" % \ (format, ' '.join(supported_formats)))
def format_table(table, format='csv', outputstream=sys.stdout): if format in ('csv', 'tsv'): import csv dialect = {'csv': csv.excel, 'tsv': csv.excel_tab}[format] writer = csv.writer(outputstream, dialect=dialect) for row in table: writer.writerow(row) elif format == 'tex': import TeXTable print >> outputstream, TeXTable.texify(table, has_header=True) elif format == 'texbitmap': import TeXTable print >> outputstream, TeXTable.make_tex_bitmap(table, has_header=True) else: raise ValueError("Unsupported format: %r (supported formats: %s)" % \ (format, ' '.join(supported_formats)))
def format_table(table, format='csv', outputstream=sys.stdout): if format in ('csv', 'tsv'): import csv dialect = {'csv' : csv.excel, 'tsv' : csv.excel_tab}[format] writer = csv.writer(outputstream, dialect=dialect) for row in table: writer.writerow(row) elif format == 'tex': import TeXTable print >>outputstream, TeXTable.texify(table, has_header=True) elif format == 'texbitmap': import TeXTable print >>outputstream, TeXTable.make_tex_bitmap(table, has_header=True) else: raise ValueError("Unsupported format: %r (supported formats: %s)" % \ (format, ' '.join(supported_formats)))