Python反スラッシュ問題
1503 ワード
python自体は、文字列に引用符を付けるときなど、特殊な文字を変換するために反スラッシュを使用します.
もちろん、反スラッシュ自体を意味することもできます.例えば、
文字列に複数の特殊文字が表示される場合、pythonは、文字列の前にrを付ける方法を提供します.たとえば、pythonは、便利にするために、元の文字列の付与方法を提供します.
しかしpythonにはバグがあります.
変数の付与時に、文字列が反スラッシュで終わるとpythonはエラーを報告し、pythonのオリジナル文字列方式で付与してもだめです.
文字列も逆スラッシュで終わるわけではありませんが、奇数の逆スラッシュで終わるわけにはいきません.たとえば、次のようになります.
上の文字列は2つの反スラッシュで終わり、pythonは正常に印刷されて実行されます.では、どのようにして文字列を1つの反スラッシュで終わりますか?
解決策は、別の文字列に反スラッシュを入れ、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\