@@ -165,7 +165,7 @@ def register_writer(klass):
165
165
if ext .startswith ('.' ):
166
166
ext = ext [1 :]
167
167
if ext not in _writer_extensions :
168
- config .register_option ("io.excel.%s .writer" % ext ,
168
+ config .register_option ("io.excel.{ext} .writer" . format ( ext = ext ) ,
169
169
engine_name , validator = str )
170
170
_writer_extensions .append (ext )
171
171
@@ -190,7 +190,8 @@ def get_writer(engine_name):
190
190
try :
191
191
return _writers [engine_name ]
192
192
except KeyError :
193
- raise ValueError ("No Excel writer '%s'" % engine_name )
193
+ raise ValueError ("No Excel writer '{engine}'"
194
+ .format (engine = engine_name ))
194
195
195
196
196
197
@Appender (_read_excel_doc )
@@ -259,7 +260,7 @@ def __init__(self, io, **kwds):
259
260
engine = kwds .pop ('engine' , None )
260
261
261
262
if engine is not None and engine != 'xlrd' :
262
- raise ValueError ("Unknown engine: %s" % engine )
263
+ raise ValueError ("Unknown engine: {engine}" . format ( engine = engine ) )
263
264
264
265
# If io is a url, want to keep the data as bytes so can't pass
265
266
# to get_filepath_or_buffer()
@@ -445,7 +446,7 @@ def _parse_cell(cell_contents, cell_typ):
445
446
446
447
for asheetname in sheets :
447
448
if verbose :
448
- print ("Reading sheet %s" % asheetname )
449
+ print ("Reading sheet {sheet}" . format ( sheet = asheetname ) )
449
450
450
451
if isinstance (asheetname , compat .string_types ):
451
452
sheet = self .book .sheet_by_name (asheetname )
@@ -634,7 +635,7 @@ def _conv_value(val):
634
635
elif is_bool (val ):
635
636
val = bool (val )
636
637
elif isinstance (val , Period ):
637
- val = "%s" % val
638
+ val = "{val}" . format ( val = val )
638
639
elif is_list_like (val ):
639
640
val = str (val )
640
641
@@ -697,9 +698,11 @@ def __new__(cls, path, engine=None, **kwargs):
697
698
ext = 'xlsx'
698
699
699
700
try :
700
- engine = config .get_option ('io.excel.%s.writer' % ext )
701
+ engine = config .get_option ('io.excel.{ext}.writer'
702
+ .format (ext = ext ))
701
703
except KeyError :
702
- error = ValueError ("No engine for filetype: '%s'" % ext )
704
+ error = ValueError ("No engine for filetype: '{ext}'"
705
+ .format (ext = ext ))
703
706
raise error
704
707
cls = get_writer (engine )
705
708
@@ -787,8 +790,9 @@ def check_extension(cls, ext):
787
790
if ext .startswith ('.' ):
788
791
ext = ext [1 :]
789
792
if not any (ext in extension for extension in cls .supported_extensions ):
790
- msg = (u ("Invalid extension for engine '%s': '%s'" ) %
791
- (pprint_thing (cls .engine ), pprint_thing (ext )))
793
+ msg = (u ("Invalid extension for engine '{engine}': '{ext}'" )
794
+ .format (engine = pprint_thing (cls .engine ),
795
+ ext = pprint_thing (ext )))
792
796
raise ValueError (msg )
793
797
else :
794
798
return True
@@ -813,8 +817,8 @@ class _Openpyxl1Writer(ExcelWriter):
813
817
def __init__ (self , path , engine = None , ** engine_kwargs ):
814
818
if not openpyxl_compat .is_compat (major_ver = self .openpyxl_majorver ):
815
819
raise ValueError ('Installed openpyxl is not supported at this '
816
- 'time. Use {0 }.x.y.'
817
- .format (self .openpyxl_majorver ))
820
+ 'time. Use {majorver }.x.y.'
821
+ .format (majorver = self .openpyxl_majorver ))
818
822
# Use the openpyxl module as the Excel writer.
819
823
from openpyxl .workbook import Workbook
820
824
@@ -854,7 +858,8 @@ def write_cells(self, cells, sheet_name=None, startrow=0, startcol=0,
854
858
855
859
for cell in cells :
856
860
colletter = get_column_letter (startcol + cell .col + 1 )
857
- xcell = wks .cell ("%s%s" % (colletter , startrow + cell .row + 1 ))
861
+ xcell = wks .cell ("{col}{row}" .format (col = colletter ,
862
+ row = startrow + cell .row + 1 ))
858
863
if (isinstance (cell .val , compat .string_types ) and
859
864
xcell .data_type_for_value (cell .val ) != xcell .TYPE_STRING ):
860
865
xcell .set_value_explicit (cell .val )
@@ -876,10 +881,12 @@ def write_cells(self, cells, sheet_name=None, startrow=0, startcol=0,
876
881
cletterstart = get_column_letter (startcol + cell .col + 1 )
877
882
cletterend = get_column_letter (startcol + cell .mergeend + 1 )
878
883
879
- wks .merge_cells ('%s%s:%s%s' % (cletterstart ,
880
- startrow + cell .row + 1 ,
881
- cletterend ,
882
- startrow + cell .mergestart + 1 ))
884
+ wks .merge_cells ('{start}{row}:{end}{mergestart}'
885
+ .format (start = cletterstart ,
886
+ row = startrow + cell .row + 1 ,
887
+ end = cletterend ,
888
+ mergestart = startrow +
889
+ cell .mergestart + 1 ))
883
890
884
891
# Excel requires that the format of the first cell in a merged
885
892
# range is repeated in the rest of the merged range.
@@ -895,7 +902,8 @@ def write_cells(self, cells, sheet_name=None, startrow=0, startcol=0,
895
902
# Ignore first cell. It is already handled.
896
903
continue
897
904
colletter = get_column_letter (col )
898
- xcell = wks .cell ("%s%s" % (colletter , row ))
905
+ xcell = wks .cell ("{col}{row}"
906
+ .format (col = colletter , row = row ))
899
907
for field in style .__fields__ :
900
908
xcell .style .__setattr__ (
901
909
field , style .__getattribute__ (field ))
@@ -955,7 +963,8 @@ def write_cells(self, cells, sheet_name=None, startrow=0, startcol=0,
955
963
956
964
for cell in cells :
957
965
colletter = get_column_letter (startcol + cell .col + 1 )
958
- xcell = wks ["%s%s" % (colletter , startrow + cell .row + 1 )]
966
+ xcell = wks ["{col}{row}"
967
+ .format (col = colletter , row = startrow + cell .row + 1 )]
959
968
xcell .value = _conv_value (cell .val )
960
969
style_kwargs = {}
961
970
@@ -977,10 +986,12 @@ def write_cells(self, cells, sheet_name=None, startrow=0, startcol=0,
977
986
cletterstart = get_column_letter (startcol + cell .col + 1 )
978
987
cletterend = get_column_letter (startcol + cell .mergeend + 1 )
979
988
980
- wks .merge_cells ('%s%s:%s%s' % (cletterstart ,
981
- startrow + cell .row + 1 ,
982
- cletterend ,
983
- startrow + cell .mergestart + 1 ))
989
+ wks .merge_cells ('{start}{row}:{end}{mergestart}'
990
+ .format (start = cletterstart ,
991
+ row = startrow + cell .row + 1 ,
992
+ end = cletterend ,
993
+ mergestart = startrow +
994
+ cell .mergestart + 1 ))
984
995
985
996
# Excel requires that the format of the first cell in a merged
986
997
# range is repeated in the rest of the merged range.
@@ -996,7 +1007,8 @@ def write_cells(self, cells, sheet_name=None, startrow=0, startcol=0,
996
1007
# Ignore first cell. It is already handled.
997
1008
continue
998
1009
colletter = get_column_letter (col )
999
- xcell = wks ["%s%s" % (colletter , row )]
1010
+ xcell = wks ["{col}{row}"
1011
+ .format (col = colletter , row = row )]
1000
1012
xcell .style = xcell .style .copy (** style_kwargs )
1001
1013
1002
1014
@classmethod
@@ -1030,7 +1042,7 @@ def _convert_to_style_kwargs(cls, style_dict):
1030
1042
for k , v in style_dict .items ():
1031
1043
if k in _style_key_map :
1032
1044
k = _style_key_map [k ]
1033
- _conv_to_x = getattr (cls , '_convert_to_{0 }' .format (k ),
1045
+ _conv_to_x = getattr (cls , '_convert_to_{k }' .format (k = k ),
1034
1046
lambda x : None )
1035
1047
new_v = _conv_to_x (v )
1036
1048
if new_v :
@@ -1505,17 +1517,19 @@ def _style_to_xlwt(cls, item, firstlevel=True, field_sep=',',
1505
1517
"""
1506
1518
if hasattr (item , 'items' ):
1507
1519
if firstlevel :
1508
- it = ["%s: %s" % (key , cls ._style_to_xlwt (value , False ))
1520
+ it = ["{key}: {val}"
1521
+ .format (key = key , val = cls ._style_to_xlwt (value , False ))
1509
1522
for key , value in item .items ()]
1510
- out = "%s " % ( line_sep ).join (it )
1523
+ out = "{sep} " . format ( sep = ( line_sep ).join (it ) )
1511
1524
return out
1512
1525
else :
1513
- it = ["%s %s" % (key , cls ._style_to_xlwt (value , False ))
1526
+ it = ["{key} {val}"
1527
+ .format (key = key , val = cls ._style_to_xlwt (value , False ))
1514
1528
for key , value in item .items ()]
1515
- out = "%s " % ( field_sep ).join (it )
1529
+ out = "{sep} " . format ( sep = ( field_sep ).join (it ) )
1516
1530
return out
1517
1531
else :
1518
- item = "%s" % item
1532
+ item = "{item}" . format ( item = item )
1519
1533
item = item .replace ("True" , "on" )
1520
1534
item = item .replace ("False" , "off" )
1521
1535
return item
0 commit comments