2017-02-15 9 views
1

私ははどのように "Pythonで文字列に格納されている「 b」が文字?である

dummy_path = "this is a dummy path\basic" 

\b文字はもちろん、バックスペースで文字列を持っているので、これは、印刷(とファイルシステムの呼び出しによって処理されます場合は)

としてこれはダミーpatasic

Patasic、素敵な名前です!)

dummy_path\がエスケープされているか、たとえば/に置き換えられていることを、この状況を検出してユーザーに自分自身に警告する機会がありますか?

+2

'print(repr(dummy_path))' –

+1

エディタ/ IDEシンタックスのハイライト表示では、通常、これらの種類のエスケープシーケンスを目立つようにマークします。構文の強調表示を使用していますか?これらのコンストラクトをより目立たせるように設定することはできますか? –

+1

これはあなたの質問に正確に答えるものではありませんが、ファイルパスに[生の文字列](https://docs.python.org/2/reference/lexical_analysis.html#string-literals)を使用することを検討してください。 'r" dummy \ basic "はバックスラッシュを単にバックスラッシュと解釈します。 – Kevin

答えて

3

あなた自身のため見ることができます:

>>> dummy_path = "this is a dummy path\basic" 
>>> dummy_path 
'this is a dummy path\x08asic' 

len機能もこの反映:

>>> "\b" in "a\bc" 
True 

方法:引数として二つの文字列とinオペレータが行うように

>>> len("a\bc") 
3 
>>> "a\bc" 
'a\x08c' 
>>> print("a\bc") 
c 

をそれはと表示されますはあなたの出力デバイスに完全に依存しています。ほとんどの端末は、各文字を順に印刷します。 \bは、表示される代わりに、カーソルを1つ左の位置に置き換えます。その時点で、aは以前に書き込まれたhを上書きします。

特に、これは、マニュアルページが太字で表示される方法です。マニュアルページ(*roffコードのスクリーン上のレンダリング)は、レターバックスペース文字シーケンスを使用して、文字を太字で表示する必要があることを示します。比喩は、タイプライターから来ています。太字の文字を入力するには、一度入力して、バックスペースを入力し、最初の文字の上にもう一度入力します。同様に、下線は文字 - バックスペース - アンダースコアとして表すことができます。

+0

'repr'を使用してください(私の例では、対話型シェルの値を表示していますが、暗黙的に示しています)。 'dummy_path'は文字列の値ですが、' repr(dummy_path) 'は文字列の値を表す文字列を返します。特に印字不能な文字は' \ x ?? '表現に置き換えられます。 – chepner

+0

あなたの答えをありがとう、ちょうど私がそれは単純に 'if" \ b "dummy_pathにあると仮定して、プログラム的に状況を検出する方法に関する小さな部分がありません: – Antonio

+0

そうです。 'in'演算子は、両方の引数が文字列の場合、少し違った動作をします。第1引数が第2引数の*要素*ではなく、第1引数が第2引数の*部分文字列*であればTrueを返します。 – chepner

関連する問題