他の人が言っているように、あなたはを使用する必要があります'\\'
。これが機能していないと思う理由は、結果を取得すると、2つの円記号で始まっているように見えるためです。ただし、2つの円記号で始まるわけではなく、Pythonが2つの円記号を示しているだけです。\n
そうでない場合は、改行(として表される)とバックスラッシュの後に文字n(として表される)の違いを区別できませんでした\\n
。
実際に何が起こっているのかを自分に納得させるには2つの方法があります。1つは、結果にprintを使用することです。これにより、エスケープが拡張されます。
>>> x = "here is a backslash \\ and here comes a newline \n this is on the next line"
>>> x
u'here is a backslash \\ and here comes a newline \n this is on the next line'
>>> print x
here is a backslash \ and here comes a newline
this is on the next line
>>> startback = x.find('\\')
>>> x[startback:]
u'\\ and here comes a newline \n this is on the next line'
>>> print x[startback:]
\ and here comes a newline
this is on the next line
別の方法はlen
、文字列の長さを確認するために使用することです。
>>> x = "Backslash \\ !"
>>> startback = x.find('\\')
>>> x[startback:]
u'\\ !'
>>> print x[startback:]
\ !
>>> len(x[startback:])
3
3であることに注意してくださいlen(x[startback:])
。文字列には、円記号、スペース、感嘆符の3つの文字が含まれています。バックスラッシュのみを含む文字列を見るだけで、何が起こっているかをさらに簡単に確認できます。
>>> x = "\\"
>>> x
u'\\'
>>> print x
\
>>> len(x)
1
x
インタラクティブプロンプトで評価する(またはそのメソッドを使用する)と、2つのバックスラッシュで始まるように見えます__repr__
。実際に印刷すると、バックスラッシュが1つだけであることがわかります。また、その長さを見ると、1文字だけの長さであることがわかります。
つまり、これが意味するのは、のバックスラッシュをエスケープするfind
必要があり、出力に表示されるバックスラッシュも2倍になる可能性があることを認識する必要があるということです。