1. ホーム
  2. python

[解決済み] なぜPythonの文字列ではバックスラッシュが3つで4つになるのですか?

2023-03-10 15:21:23

質問

なぜ '?\\\?'=='?\\\\?'True ? これは私を狂わせますし、合理的な答えを見つけることができません....

>>> list('?\\\?')
['?', '\\', '\\', '?']
>>> list('?\\\\?')
['?', '\\', '\\', '?']

どのように解決するのですか?

基本的にpythonはバックスラッシュの処理に若干甘いためです。引用元 https://docs.python.org/2.0/ref/strings.html :

標準Cとは異なり、認識できないエスケープシーケンスはすべて文字列のまま変更されない、すなわち バックスラッシュは文字列に残されます .

(原文のまま強調)

したがって、pythonでは、3つのバックスラッシュは4つに等しいというわけではなく、バックスラッシュの後に以下のような文字が続くと、4つになります。 ? のようにバックスラッシュの後に文字が続くと、2つ合わせて2文字として扱われます。 \? は認識されるエスケープシーケンスではないためです。