- 解決策。re.error: bad escape \s at position 0とか \z とか \p
- エラー
- 解決策
- 補足
- 補足2
- 補足3(2023/04/02)
- 補足(2023/09/10)
- コメント
解決策。re.error: bad escape \s at position 0とか \z とか \p
エラー
エラーの内容
re.error: bad escape \s at position 0
re.error: bad escape \z at position 0
re.error: bad escape \p at position 0
エラー詳細
Traceback (most recent call last): File "C:\Users\xyzzz\AppData\Local\Programs\Python\Python37\lib\sre_parse.py", line 1021, in parse_template this = chr(ESCAPES[this][1]) KeyError: '\\p' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "re00.py", line 38, in <module> b = re.sub('y','\\p',a) File "C:\Users\xyzzz\AppData\Local\Programs\Python\Python37\lib\re.py", line 192, in sub return _compile(pattern, flags).sub(repl, string, count) File "C:\Users\xyzzz\AppData\Local\Programs\Python\Python37\lib\re.py", line 309, in _subx template = _compile_repl(template, pattern) File "C:\Users\xyzzz\AppData\Local\Programs\Python\Python37\lib\re.py", line 300, in _compile_repl return sre_parse.parse_template(repl, pattern) File "C:\Users\xyzzz\AppData\Local\Programs\Python\Python37\lib\sre_parse.py", line 1024, in parse_template raise s.error('bad escape %s' % this, len(this)) re.error: bad escape \p at position 0
環境
Python 3.7.2(windows10)
解決策
r と \ を加える。
b = re.sub('y',r'\\s',a)
補足
subの最初の引数側は、セーフ。(わけわからんというか、他の解説参照。)
b = re.sub('\s','y',a)
補足2
エラーとエラー対応後の様子を示すサンプルです。
import re r''' a = r'xyzopqstu\x\y\z\o\p\q\s\t' b = re.sub('y','\s',a) print(b) # re.error: bad escape \s at position 0 ''' a = r'xyzopqstu\x\y\z\o\p\q\s\t' b = re.sub('y',r'\\s',a) print(b) # x\szopqstu\x\\s\z\o\p\q\s\t r''' a = r'xyzopqstu\x\y\z\o\p\q\s\t' b = re.sub('y','\z',a) print(b) # re.error: bad escape \z at position 0 ''' a = r'xyzopqstu\x\y\z\o\p\q\s\t' b = re.sub('y',r'\\z',a) print(b) # x\zzopqstu\x\\z\z\o\p\q\s\t r''' a = r'xyzopqstu\x\y\z\o\p\q\s\t' b = re.sub('y','\p',a) print(b) # re.error: bad escape \p at position 0 ''' a = r'xyzopqstu\x\y\z\o\p\q\s\t' b = re.sub('y',r'\\p',a) print(b) # x\pzopqstu\x\\p\z\o\p\q\s\t a = r'xyzopqstu\x\y\z\o\p\q\s\t' b = re.sub('\s','y',a) print(b) # xyzopqstu\x\y\z\o\p\q\s\t(こっちはセーフ)
補足3(2023/04/02)
↓このコードでエラー。
template_regex = re.sub(r'\\ +', r'\s+', template_regex)
エラー。↓
re.error: bad escape \s at position 0
これ↓でOK
template_regex = re.sub(r'\\ +', r'\\s+', template_regex)
補足(2023/09/10)
多少、この件、解読できたので、、、記事を書きました!!
keep-loving-python.hatenablog.com
コメント
アドバイスあれば、お願いします。
自分でコメントですが。。。この解決策の説明、良!