On 14.10.16 18:40, Lele Gaifax wrote:
Hi all,
trying out pgcli with Python 3.6.0b2 I got an error related to what seem a
different behaviour, or even a bug, of re.sub().
The original intent is to replace spaces within a string with the regular
expression
\s+ (see
https://github.com/dbcli/pgcli/blob/master/pgcli/packages/prioritization.py#L11,
ignore the fact that the re.sub() call seem underoptimal).
With Python 3.5.2 is straightforward:
$ python3.5
Python 3.5.2+ (default, Sep 22 2016, 12:18:14)
[GCC 6.2.0 20160927] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import re
>>> re.sub(r'\s+', r'\s+', 'foo bar')
'foo\\s+bar'
While Python 3.6.0b2 gives:
$ python3.6
Python 3.6.0b2+ (default, Oct 11 2016, 08:30:05)
[GCC 6.2.0 20160927] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import re
>>> re.sub(r'\s+', r'\s+', 'foo bar')
Traceback (most recent call last):
File "/usr/local/python3.6/lib/python3.6/sre_parse.py", line 945, in
parse_template
this = chr(ESCAPES[this][1])
KeyError: '\\s'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/python3.6/lib/python3.6/re.py", line 191, in sub
return _compile(pattern, flags).sub(repl, string, count)
File "/usr/local/python3.6/lib/python3.6/re.py", line 326, in _subx
template = _compile_repl(template, pattern)
File "/usr/local/python3.6/lib/python3.6/re.py", line 317, in _compile_repl
return sre_parse.parse_template(repl, pattern)
File "/usr/local/python3.6/lib/python3.6/sre_parse.py", line 948, in
parse_template
raise s.error('bad escape %s' % this, len(this))
sre_constants.error: bad escape \s at position 0
Accordingly to the documentation
(https://docs.python.org/3.6/library/re.html#re.sub)
“unknown escapes [in the repl argument] such as \& are left alone”.
Am I missing something, or is this a regression?
Unknown escapes consisting of "\" following by ASCII letter are errors
in 3.6 (and warnings in 3.5). Seems the documentation is not accurate.
Could you file a report on https://bugs.python.org/ ?
--
https://mail.python.org/mailman/listinfo/python-list