16

文字列のバックスラッシュをエスケープするにはどうすればよいですか: 'pictures\12761_1.jpg'?

私は生の文字列について知っています。'pictures\12761_1.jpg'たとえば、xmlファイルから値を取得する場合、strをrawに変換するにはどうすればよいですか?

4

3 に答える 3

25

.replace()rawstring と一緒にstring メソッドを使用できます。

パイソン 2:

>>> print r'pictures\12761_1.jpg'.replace("\\", "/")
pictures/12761_1.jpg

パイソン 3:

>>> print(r'pictures\12761_1.jpg'.replace("\\", "/"))
pictures/12761_1.jpg

ここで注目すべき点が 2 つあります。

  • まず、文字列の前に r を付けて、テキストを引き紐として読み取ります。これを指定しないと、ここで Unicode エラーが発生します。
  • また、replace メソッドの最初の引数内に 2 つのバックスラッシュが指定されていることも確認しました。その理由は、バックスラッシュがエスケープ シーケンスとして機能するために他の文字と共に使用されるリテラルであるためです。ここで、エスケープ シーケンスとは何か疑問に思うかもしれません。したがって、エスケープ シーケンスは、文字列リテラルまたは文字内で使用されたときにそれ自体を表さない文字のシーケンスです。バックスラッシュで始まる 2 つ以上の文字で構成されます。同様に「\n」は改行を表し、同様に多くあります。そのため、通常はエスケープ シーケンスの開始であるバックスラッシュ自体をエスケープするには、別のバックスラッシュを使用してエスケープします。

2 番目の部分が少しわかりにくいことは承知していますが、ある程度の意味があることを願っています。

于 2011-06-08T07:48:26.303 に答える
0

分割/結合も使用できます。

print "/".join(r'pictures\12761_1.jpg'.split("\\"))

編集:

使用できる他の方法は、取得中にデータを準備することです(たとえば、変数に割り当てる前に文字列を更新するという考えです)-たとえば:

f = open('c:\\tst.txt', "r")
print f.readline().replace('\\','/')

>>>'pictures/12761_1.jpg\n'
于 2011-06-08T07:51:32.477 に答える