Skip to content

Commit e6b3436

Browse files
committed
CLN: replace %s syntax with .format in pandas.io
progress towards pandas-dev#16130
1 parent 3086e0a commit e6b3436

File tree

6 files changed

+216
-169
lines changed

6 files changed

+216
-169
lines changed

pandas/io/packers.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -518,7 +518,8 @@ def encode(obj):
518518
elif isinstance(obj, date):
519519
return {u'typ': u'date',
520520
u'data': u(obj.isoformat())}
521-
raise Exception("cannot encode this datetimelike object: %s" % obj)
521+
raise Exception(
522+
"cannot encode this datetimelike object: {obj}".format(obj=obj))
522523
elif isinstance(obj, Period):
523524
return {u'typ': u'period',
524525
u'ordinal': obj.ordinal,

pandas/io/parsers.py

+35-28
Original file line numberDiff line numberDiff line change
@@ -1463,9 +1463,9 @@ def extract(r):
14631463
for n in range(len(columns[0])):
14641464
if all(compat.to_str(c[n]) in self.unnamed_cols for c in columns):
14651465
raise ParserError(
1466-
"Passed header=[%s] are too many rows for this "
1466+
"Passed header=[{header}] are too many rows for this "
14671467
"multi_index of columns"
1468-
% ','.join(str(x) for x in self.header)
1468+
.format(header=','.join(str(x) for x in self.header))
14691469
)
14701470

14711471
# Clean the column names (if we have an index_col).
@@ -1498,9 +1498,10 @@ def _maybe_dedup_names(self, names):
14981498
counts[col] = cur_count + 1
14991499

15001500
if is_potential_mi:
1501-
col = col[:-1] + ('%s.%d' % (col[-1], cur_count),)
1501+
col = col[:-1] + ('{col}.{cnt}'.format(
1502+
col=col[-1], cnt=cur_count),)
15021503
else:
1503-
col = '%s.%d' % (col, cur_count)
1504+
col = '{col}.{cnt}'.format(col=col, cnt=cur_count)
15041505
cur_count = counts[col]
15051506

15061507
names[i] = col
@@ -1547,7 +1548,7 @@ def _get_simple_index(self, data, columns):
15471548
def ix(col):
15481549
if not isinstance(col, compat.string_types):
15491550
return col
1550-
raise ValueError('Index %s invalid' % col)
1551+
raise ValueError('Index {col} invalid'.format(col=col))
15511552

15521553
to_remove = []
15531554
index = []
@@ -1571,8 +1572,8 @@ def _get_name(icol):
15711572
return icol
15721573

15731574
if col_names is None:
1574-
raise ValueError(('Must supply column order to use %s as '
1575-
'index') % str(icol))
1575+
raise ValueError(('Must supply column order to use {icol!s} '
1576+
'as index').format(icol=icol))
15761577

15771578
for i, c in enumerate(col_names):
15781579
if i == icol:
@@ -1683,7 +1684,8 @@ def _convert_to_ndarrays(self, dct, na_values, na_fvalues, verbose=False,
16831684

16841685
result[c] = cvals
16851686
if verbose and na_count:
1686-
print('Filled %d NA values in column %s' % (na_count, str(c)))
1687+
print('Filled {count} NA values in column {c!s}'.format(
1688+
count=na_count, c=c))
16871689
return result
16881690

16891691
def _infer_types(self, values, na_values, try_num_bool=True):
@@ -1770,8 +1772,9 @@ def _cast_types(self, values, cast_type, column):
17701772
values = astype_nansafe(values, cast_type,
17711773
copy=True, skipna=True)
17721774
except ValueError:
1773-
raise ValueError("Unable to convert column %s to "
1774-
"type %s" % (column, cast_type))
1775+
raise ValueError(
1776+
"Unable to convert column {column} to type {type}".format(
1777+
column=column, type=cast_type))
17751778
return values
17761779

17771780
def _do_date_conversions(self, names, data):
@@ -1834,7 +1837,7 @@ def __init__(self, src, **kwds):
18341837

18351838
if self.names is None:
18361839
if self.prefix:
1837-
self.names = ['%s%d' % (self.prefix, i)
1840+
self.names = ['{prefix}{i}'.format(prefix=self.prefix, i=i)
18381841
for i in range(self._reader.table_width)]
18391842
else:
18401843
self.names = lrange(self._reader.table_width)
@@ -2236,10 +2239,11 @@ def __init__(self, f, **kwds):
22362239
raise ValueError('Only length-1 decimal markers supported')
22372240

22382241
if self.thousands is None:
2239-
self.nonnum = re.compile('[^-^0-9^%s]+' % self.decimal)
2242+
self.nonnum = re.compile(
2243+
'[^-^0-9^{decimal}]+'.format(decimal=self.decimal))
22402244
else:
2241-
self.nonnum = re.compile('[^-^0-9^%s^%s]+' % (self.thousands,
2242-
self.decimal))
2245+
self.nonnum = re.compile('[^-^0-9^{thousands}^{decimal}]+'.format(
2246+
thousands=self.thousands, decimal=self.decimal))
22432247

22442248
def _set_no_thousands_columns(self):
22452249
# Create a set of column ids that are not to be stripped of thousands
@@ -2478,8 +2482,8 @@ def _infer_columns(self):
24782482
except StopIteration:
24792483
if self.line_pos < hr:
24802484
raise ValueError(
2481-
'Passed header=%s but only %d lines in file'
2482-
% (hr, self.line_pos + 1))
2485+
'Passed header={hr} but only {pos} lines in '
2486+
'file'.format(hr=hr, pos=(self.line_pos + 1)))
24832487

24842488
# We have an empty file, so check
24852489
# if columns are provided. That will
@@ -2520,7 +2524,8 @@ def _infer_columns(self):
25202524

25212525
while cur_count > 0:
25222526
counts[col] = cur_count + 1
2523-
col = "%s.%d" % (col, cur_count)
2527+
col = "{columns}.{count}".format(
2528+
columns=col, count=cur_count)
25242529
cur_count = counts[col]
25252530

25262531
this_columns[i] = col
@@ -2588,8 +2593,8 @@ def _infer_columns(self):
25882593

25892594
if not names:
25902595
if self.prefix:
2591-
columns = [['%s%d' % (self.prefix, i)
2592-
for i in range(ncols)]]
2596+
columns = [['{prefix}{idx}'.format(
2597+
prefix=self.prefix, idx=i) for i in range(ncols)]]
25932598
else:
25942599
columns = [lrange(ncols)]
25952600
columns = self._handle_usecols(columns, columns[0])
@@ -3016,8 +3021,9 @@ def _rows_to_cols(self, content):
30163021
content.append(l)
30173022

30183023
for row_num, actual_len in bad_lines:
3019-
msg = ('Expected %d fields in line %d, saw %d' %
3020-
(col_len, row_num + 1, actual_len))
3024+
msg = ('Expected {col_len} fields in line {line}, saw '
3025+
'{length}'.format(col_len=col_len, line=(row_num + 1),
3026+
length=actual_len))
30213027
if (self.delimiter and
30223028
len(self.delimiter) > 1 and
30233029
self.quoting != csv.QUOTE_NONE):
@@ -3188,8 +3194,9 @@ def _isindex(colspec):
31883194
new_name, col, old_names = _try_convert_dates(
31893195
converter, colspec, data_dict, orig_names)
31903196
if new_name in data_dict:
3191-
raise ValueError('New date column already in dict %s' %
3192-
new_name)
3197+
raise ValueError(
3198+
'New date column already in dict {name}'.format(
3199+
name=new_name))
31933200
new_data[new_name] = col
31943201
new_cols.append(new_name)
31953202
date_cols.update(old_names)
@@ -3198,8 +3205,8 @@ def _isindex(colspec):
31983205
# dict of new name to column list
31993206
for new_name, colspec in compat.iteritems(parse_spec):
32003207
if new_name in data_dict:
3201-
raise ValueError('Date column %s already in dict' %
3202-
new_name)
3208+
raise ValueError(
3209+
'Date column {name} already in dict'.format(name=new_name))
32033210

32043211
_, col, old_names = _try_convert_dates(converter, colspec,
32053212
data_dict, orig_names)
@@ -3378,7 +3385,7 @@ def _stringify_na_values(na_values):
33783385
# we are like 999 here
33793386
if v == int(v):
33803387
v = int(v)
3381-
result.append("%s.0" % v)
3388+
result.append("{value}.0".format(value=v))
33823389
result.append(str(v))
33833390

33843391
result.append(v)
@@ -3523,8 +3530,8 @@ def get_rows(self, infer_nrows, skiprows=None):
35233530

35243531
def detect_colspecs(self, infer_nrows=100, skiprows=None):
35253532
# Regex escape the delimiters
3526-
delimiters = ''.join(r'\%s' % x for x in self.delimiter)
3527-
pattern = re.compile('([^%s]+)' % delimiters)
3533+
delimiters = ''.join(r'\{dlm}'.format(dlm=[x for x in self.delimiter]))
3534+
pattern = re.compile('([^{dlm}]+)'.format(dlm=delimiters))
35283535
rows = self.get_rows(infer_nrows, skiprows)
35293536
if not rows:
35303537
raise EmptyDataError("No rows from which to infer column width")

0 commit comments

Comments
 (0)