Python反スラッシュ問題

1503 ワード

python自体は、文字列に引用符を付けるときなど、特殊な文字を変換するために反スラッシュを使用します.
>>> syztoo = 'it\'s a song'
>>> syztoo
"it's a song"
>>> print (syztoo)
it's a song

もちろん、反スラッシュ自体を意味することもできます.例えば、
>>> file = 'C:\
ow' >>> file 'C:\
ow' >>> print (file) C:
ow

文字列に複数の特殊文字が表示される場合、pythonは、文字列の前にrを付ける方法を提供します.たとえば、pythonは、便利にするために、元の文字列の付与方法を提供します.
>>> file = r'C:
ow\table
ginx' >>> print (file) C:
ow\table
ginx

しかしpythonにはバグがあります.
>>> file = r'C:
ow\table
ginx\' File "", line 1 file = r'C:
ow\table
ginx\' ^ SyntaxError: EOL while scanning string literal

変数の付与時に、文字列が反スラッシュで終わるとpythonはエラーを報告し、pythonのオリジナル文字列方式で付与してもだめです.
文字列も逆スラッシュで終わるわけではありませんが、奇数の逆スラッシュで終わるわけにはいきません.たとえば、次のようになります.
>>> file = r'C:
ow\table
ginx\\' >>> print (file) C:
ow\table
ginx\\

上の文字列は2つの反スラッシュで終わり、pythonは正常に印刷されて実行されます.では、どのようにして文字列を1つの反スラッシュで終わりますか?
解決策は、別の文字列に反スラッシュを入れ、pythonを自動的にマージすることです.
>>> file = r'C:
ow\table
ginx' '\\' >>> print (file) C:
ow\table
ginx\