2010-12-11 11 views
14

私は文字列Uを持っています。内容は可変です。私は生の文字列にしたいと思います。これについてどうすればいいですか?Python生の文字列

r ''メソッドと同様です。

U = str(var) 
+6

生の文字列は、文字列定数を定義するときの構文が異なります。特に、あなたは生の文字列を使うことを考えるvarから何を望んでいますか? –

+1

Python 2またはPython 3を使用していますか? Python 3の場合、おそらく 'bytes'型について質問していますか? –

答えて

17

生の文字列は、文字列リテラルにのみ適用されます。エスケープシーケンス処理によって変更される文字列をより便利に表現できるように、それらは存在します。これは、文字列リテラルに正規表現や他の形式のコードを書き出すときに特に便利です。エスケープ処理のないUnicode文字列が必要な場合は、urという接頭辞を付けてください(ur'somestring'など)。

+6

@TokenMacGuyはこれを知っているとは思っていませんが、 'r'C:\ Python27 \ Tools \ Scripts \ 2to3のように、パスで区切り文字としてバックスラッシュを使うWindows上のパスを定義するのにも便利です。 py'' – martineau

+8

ああ、TokenMacGuyはちょうど名前です。私のメインマシンは窓を走らせます。私がファイルパスに生の文字列を使用しない*本当の理由は、パス名を決してハードコードしないからです。 – SingleNegationElimination

35

生の文字列はで、異なる種類の文字列ではありませんです。これらは、ソースコード内に文字列を記述する別の方法です。文字列が作成されると、その文字列がその文字列になります。

+6

+1、希少で正確な使用方法は「それは何ですか」 – LoveMeSomeCode

+0

これは実際には間違っています。正解にはもう一つの答えがあります。「生の弦は彼らの中の何かを逃れません」 – igorsantos07

26

あなたが探しているものはstr.encode( "string-escape")関数だと思います。

a = '\x89' 
a.encode('unicode_escape') 
'\\x89' 

注:使用string-escapeは、Python 2.xと旧バージョン

のために、私は同様のソリューションを探し、見つかったたとえば、あなたが「生の文字列」する変数を持っている場合解決方法: casting raw strings python

+0

これが解決策です。 – erikbwork

+4

Python 3.5.1: 'LookupError:不明なエンコーディング:文字列エスケープ' – nnyby

+0

@nnyby代わりに 'unicode_escape'を使用してください –