Python reモジュールで、バックスラッシュ「\」を使用して文字列を区切る方法は?

Python言語では、エスケープ文字としてバックスラッシュ(\)を使用して、「\ n」、「\ r \ n」などの一部の文字をエスケープします。したがって、バックスラッシュがPython文字列に表示されると、次の文字が自動的にエスケープされます。しかし、これは問題につながります。つまり、バックスラッシュを文字リテラル(リベラル)の意味として使用する場合は、どうすればよいでしょうか。

reモジュール(正規表現モジュール)を使用しない場合は、2つのバックスラッシュを使用してPython文字列でエスケープし、1つのバックスラッシュを表すことができます。サンプルコードは次のとおりです。

import sys 

# backslash escape
enter = "\r\n" if sys.platform == "win32" else "\n"

# backslash liberal
backslash_liberal = "\\"

この時点で、Python文字のsplitメソッドを使用し、区切り文字として2つの円記号を使用すれば、問題はありません。サンプルコードは次のとおりです。

# Use str type's split() method
print("aa\\bb".split("\\"))

ただし、reモジュールのsplit()メソッドを使用し、それでも2つのバックスラッシュを使用してPython文字列を分割すると、エラーメッセージが表示されます。サンプルコードは次のとおりです。

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import re

s = "aa\\bb"
try:
    re.split("\\", s) 
except Exception as e:
    print("error:", e)

このエラーの理由は、バックスラッシュがreモジュールのエスケープ文字としても使用されているためです。具体的には、2つのバックスラッシュが入力されると、2つのバックスラッシュは最初にPythonインタープリターでエスケープされてバックスラッシュになり、次にこのバックスラッシュがreモジュールに入力されます。このとき、reモジュールは対応する有効なエスケープエンドを見つけることができません。エラーメッセージ「位置0の不正なエスケープ(パターンの終わり)(Python 3.8)」が表示されます。

2つの一般的な解決策があります。

1つは、4つの円記号 "\\"を使用することです。もう1つは、生の文字列、つまりr "\"を使用することです。サンプルコードは次のとおりです。

print("Solution 1: ", re.split("\\\\", s))
print("Solution 2: ", re.split(r"\\", s))

おすすめ

転載: blog.csdn.net/qdPython/article/details/112673683