7
7
8
8
from pandas .core .base import PandasObject
9
9
from pandas .core .common import adjoin , notnull
10
+ from pandas .io .common import _is_url
10
11
from pandas .core .index import Index , MultiIndex , _ensure_index
11
12
from pandas import compat
12
13
from pandas .compat import (StringIO , lzip , range , map , zip , reduce , u ,
@@ -341,7 +342,8 @@ def __init__(self, frame, buf=None, columns=None, col_space=None,
341
342
header = True , index = True , na_rep = 'NaN' , formatters = None ,
342
343
justify = None , float_format = None , sparsify = None ,
343
344
index_names = True , line_width = None , max_rows = None ,
344
- max_cols = None , show_dimensions = False , ** kwds ):
345
+ max_cols = None , show_dimensions = False , urls_as_links = False ,
346
+ ** kwds ):
345
347
self .frame = frame
346
348
self .buf = buf if buf is not None else StringIO ()
347
349
self .show_index_names = index_names
@@ -363,6 +365,7 @@ def __init__(self, frame, buf=None, columns=None, col_space=None,
363
365
self .max_rows_displayed = min (max_rows or len (self .frame ),
364
366
len (self .frame ))
365
367
self .show_dimensions = show_dimensions
368
+ self .urls_as_links = urls_as_links
366
369
367
370
if justify is None :
368
371
self .justify = get_option ("display.colheader_justify" )
@@ -863,6 +866,7 @@ def __init__(self, formatter, classes=None, max_rows=None, max_cols=None,
863
866
self .max_rows = max_rows or len (self .fmt .frame )
864
867
self .max_cols = max_cols or len (self .fmt .columns )
865
868
self .show_dimensions = self .fmt .show_dimensions
869
+ self .urls_as_links = self .fmt .urls_as_links
866
870
self .is_truncated = (self .max_rows < len (self .fmt .frame ) or
867
871
self .max_cols < len (self .fmt .columns ))
868
872
self .notebook = notebook
@@ -896,6 +900,11 @@ def _write_cell(self, s, kind='td', indent=0, tags=None):
896
900
else :
897
901
esc = {}
898
902
rs = com .pprint_thing (s , escape_chars = esc ).strip ()
903
+ if self .urls_as_links and isinstance (s , compat .string_types ):
904
+ s = s .strip ()
905
+ if _is_url (s ):
906
+ rs = '<a href="{url}">{escaped_url}</a>' .format (url = s ,
907
+ escaped_url = rs )
899
908
self .write (
900
909
'%s%s</%s>' % (start_tag , rs , kind ), indent )
901
910
0 commit comments