<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def write_table(table, target, tablename=None, ilwdchar_compat=None, **kwargs):
 """Write a `~astropy.table.Table` to file in LIGO_LW XML format This method will attempt to write in the new `ligo.lw` format (if ``ilwdchar_compat`` is ``None`` or ``False``), but will fall back to the older `glue.ligolw` (in that order) if that fails (if ``ilwdchar_compat`` is ``None`` or ``True``). """

    if tablename is None:  # try and get tablename from metadata
        tablename = table.meta.get('tablename', None)
    if tablename is None:  # panic
        raise ValueError("please pass ``tablename=`` to specify the target "
                         "LIGO_LW Table Name")
    try:
        llwtable = table_to_ligolw(
            table,
            tablename,
            ilwdchar_compat=ilwdchar_compat or False,
        )
    except LigolwElementError as exc:
        if ilwdchar_compat is not None:
            raise
        try:
            llwtable = table_to_ligolw(table, tablename, ilwdchar_compat=True)
        except Exception:
            raise exc
    return write_ligolw_tables(target, [llwtable], **kwargs)