76

変数から生の形式で文字列を出力する方法を見つけようとしています。たとえば、次のようなパスの環境変数を Windows に追加すると'C:\\Windows\Users\alexb\'、次のことができることがわかります。

print(r'C:\\Windows\Users\alexb\')

しかし、変数の前に置くことはできませんr....たとえば:

test = 'C:\\Windows\Users\alexb\'
print(rtest)

明らかに印刷しようとするだけrtestです。

あるのも知ってる

test = 'C:\\Windows\Users\alexb\'
print(repr(test))

しかし、これはそうである'C:\\Windows\\Users\x07lexb' ように戻ります

test = 'C:\\Windows\Users\alexb\'
print(test.encode('string-escape'))

それで、まだテストを使用して、そのパスを保持する変数をRAWで印刷するエレガントな方法があるかどうか疑問に思っていますか? それだけだったらいいのに

print(raw(test))

しかし、そうではありません

4

13 に答える 13

33

既存の文字列を「生」にすることはできません。rリテラルのプレフィックスはパーサーによって理解されます。文字列内のエスケープ シーケンスを無視するように指示します。ただし、文字列リテラルが解析されると、生の文字列と「通常の」文字列の間に違いはありません。たとえば、改行を含む文字列がある場合、実行時にその改行がエスケープシーケンスから来たのか\n、三重引用符で囲まれた文字列のリテラル改行から来たのか (おそらく生の改行でも!)、chr(10)、ファイルから読み取るなど、思いつく可能性のあるものなら何でも。これらのメソッドのいずれかから構築された実際の文字列オブジェクトは同じように見えます。

于 2013-09-09T21:45:57.063 に答える
2

r'string' を使用するだけです。期待どおりの回答がまだ得られていないことがわかったので、これが役立つことを願っています。

    test = 'C:\\Windows\Users\alexb\'
    rawtest = r'%s' %test
于 2020-02-26T10:29:49.090 に答える
1

あなたの特定の文字列は、末尾にエスケープ文字があるため、入力したとおりに機能しません \", 引用符で閉じることはできません.

私はまだPythonに非常に慣れていないので、間違っているかもしれません。そうであれば、私を修正してください。ただし、それを調整するために少し変更すると、repr()関数は、変数を生の文字列として。

次の 2 つの方法で実行できます。

>>>print("C:\\Windows\Users\alexb\\")

C:\Windows\Users\alexb\

>>>print(r"C:\\Windows\Users\alexb\\")
C:\\Windows\Users\alexb\\

変数に格納します。

test = "C:\\Windows\Users\alexb\\"

repr() を使用します。

>>>print(repr(test))
'C:\\Windows\Users\alexb\\'

または %r による文字列置換

print("%r" %test)
'C:\\Windows\Users\alexb\\'

ただし、文字列は一重引用符で再生成されるため、後でそれらを取り除く必要があります。

于 2018-08-25T18:34:12.553 に答える