diff options
Diffstat (limited to 'numpy/matrixlib/defmatrix.py')
-rw-r--r-- | numpy/matrixlib/defmatrix.py | 40 |
1 files changed, 26 insertions, 14 deletions
diff --git a/numpy/matrixlib/defmatrix.py b/numpy/matrixlib/defmatrix.py index 7728ea229..a6570eedd 100644 --- a/numpy/matrixlib/defmatrix.py +++ b/numpy/matrixlib/defmatrix.py @@ -6,21 +6,33 @@ from numpy.core.numeric import concatenate, isscalar, binary_repr, identity, asa from numpy.core.numerictypes import issubdtype # make translation table -_table = [None]*256 -for k in range(256): - _table[k] = chr(k) -_table = ''.join(_table) - _numchars = '0123456789.-+jeEL' -_todelete = [] -for k in _table: - if k not in _numchars: - _todelete.append(k) -_todelete = ''.join(_todelete) -del k - -def _eval(astr): - return eval(astr.translate(_table,_todelete)) + +if sys.version_info[0] >= 3: + class _NumCharTable: + def __getitem__(self, i): + if chr(i) in _numchars: + return chr(i) + else: + return None + _table = _NumCharTable() + def _eval(astr): + return eval(astr.translate(_table)) +else: + _table = [None]*256 + for k in range(256): + _table[k] = chr(k) + _table = ''.join(_table) + + _todelete = [] + for k in _table: + if k not in _numchars: + _todelete.append(k) + _todelete = ''.join(_todelete) + del k + + def _eval(astr): + return eval(astr.translate(_table,_todelete)) def _convert_from_string(data): rows = data.split(';') |