def read_clipboard(sep=r'\s+', **kwargs):  # pragma: no cover
    r"""
    Read text from clipboard and pass to read_csv. See read_csv for the
    full argument list

    Parameters
    ----------
    sep : str, default '\s+'
        A string or regex delimiter. The default of '\s+' denotes
        one or more whitespace characters.

    Returns
    -------
    parsed : DataFrame
    """
    encoding = kwargs.pop('encoding', 'utf-8')

    # only utf-8 is valid for passed value because that's what clipboard
    # supports
    if encoding is not None and encoding.lower().replace('-', '') != 'utf8':
        raise NotImplementedError(
            'reading from clipboard only supports utf-8 encoding')

    from pandas.io.clipboard import clipboard_get
    from pandas.io.parsers import read_csv
    text = clipboard_get()

    # Try to decode (if needed, as "text" might already be a string here).
    try:
        text = text.decode(kwargs.get('encoding')
                           or get_option('display.encoding'))
    except AttributeError:
        pass

    # Excel copies into clipboard with \t separation
    # inspect no more then the 10 first lines, if they
    # all contain an equal number (>0) of tabs, infer
    # that this came from excel and set 'sep' accordingly
    lines = text[:10000].split('\n')[:-1][:10]

    # Need to remove leading white space, since read_csv
    # accepts:
    #    a  b
    # 0  1  2
    # 1  3  4

    counts = {x.lstrip().count('\t') for x in lines}
    if len(lines) > 1 and len(counts) == 1 and counts.pop() != 0:
        sep = '\t'

    # Edge case where sep is specified to be None, return to default
    if sep is None and kwargs.get('delim_whitespace') is None:
        sep = r'\s+'

    # Regex separator currently only works with python engine.
    # Default to python if separator is multi-character (regex)
    if len(sep) > 1 and kwargs.get('engine') is None:
        kwargs['engine'] = 'python'
    elif len(sep) > 1 and kwargs.get('engine') == 'c':
        warnings.warn('read_clipboard with regex separator does not work'
                      ' properly with c engine')

    return read_csv(StringIO(text), sep=sep, **kwargs)
def read_clipboard ( sep = r'\s+' , ** kwargs ) : encoding = kwargs . pop ( 'encoding' , 'utf-8' ) if encoding is not None and encoding . lower ( ) . replace ( '-' , '' ) != 'utf8' : raise NotImplementedError ( 'reading from clipboard only supports utf-8 encoding' ) from pandas . io . clipboard import clipboard_get from pandas . io . parsers import read_csv text = clipboard_get ( ) try : text = text . decode ( kwargs . get ( 'encoding' ) or get_option ( 'display.encoding' ) ) except AttributeError : pass lines = text [ : 10000 ] . split ( '\n' ) [ : - 1 ] [ : 10 ] counts = { x . lstrip ( ) . count ( '\t' ) for x in lines } if len ( lines ) > 1 and len ( counts ) == 1 and counts . pop ( ) != 0 : sep = '\t' if sep is None and kwargs . get ( 'delim_whitespace' ) is None : sep = r'\s+' if len ( sep ) > 1 and kwargs . get ( 'engine' ) is None : kwargs [ 'engine' ] = 'python' elif len ( sep ) > 1 and kwargs . get ( 'engine' ) == 'c' : warnings . warn ( 'read_clipboard with regex separator does not work' ' properly with c engine' ) return read_csv ( StringIO ( text ) , sep = sep , ** kwargs )
r"""
    Read text from clipboard and pass to read_csv. See read_csv for the
    full argument list

    Parameters
    ----------
    sep : str, default '\s+'
        A string or regex delimiter. The default of '\s+' denotes
        one or more whitespace characters.

    Returns
    -------
    parsed : DataFrame