4

Pythonスクリプトを使用してCコードを生成したいので、エスケープする必要はありません。たとえば、私は試しました:

myFile.write(someString + r'\r\n\')

r接頭辞が物事を機能させることを期待しています。ただし、まだエラーが発生しています。

myFile.write(someString + ur'\r\n\')
                                   ^
SyntaxError: EOL while scanning string literal

Pythonで生の文字列をファイルに書き込むにはどうすればよいですか?

4

5 に答える 5

4

文字列の終わりをエスケープしないように最後をエスケープする必要があり\ますが、生の文字列の一部として配置すると、希望どおりの結果が得られません。

>>> r'\r\n\\'
'\\r\\n\\\\'

ただし、Pythonの文字列リテラルの連結では、生の文字列と通常の文字列を混在させることができます。

>>> r'\r\n' '\\'
'\\r\\n\\'
于 2012-06-08T11:31:30.583 に答える
4

Pythonの生の刺し傷はバックスラッシュで終わらせることはできません

ただし、回避策があります。

文字列の最後に空白を追加するだけです。

>>> with open("c:\\tmp\\test.txt", "w") as myFile:
...   myFile.write(someString + r'\r\n\ ')

あなたはおそらくそれを気にしないので、それは解決策かもしれません。

ハローsomeStringだと仮定します。

これにより、がスペースHallo\r\n\_であるファイルに書き込まれます。_

余分なスペースが気に入らない場合は、次のように削除できます。

>>> with open("c:\\tmp\\test.txt", "w") as myFile:
...   myFile.write(someString + r'\r\n\ '[:-1])

Hallo\r\n\これにより、余分な空白やバックスラッシュをエスケープせずにファイルに書き込みます。

于 2012-06-08T11:38:16.663 に答える
1

formatメソッドを使用して、生の文字列を文字列に挿入できます。これにより、生の文字列が適切にエスケープされて挿入されます。

例:

mystring = "some string content {0}"
# insert raw string 
mystring = mystring.format(r"\r\n\\")

myfile = open("test.txt", "w")
myfile.write(mystring)
myfile.close()
于 2012-06-08T11:50:21.627 に答える
0
myFile.write(someString + r'\r\n\\')

文字列をエスケープするだけです^^

于 2012-06-08T11:10:30.157 に答える
0

エスケープせずに任意の内容の文字列リテラルを作成する方法はありません。たとえば「リテラルの終わりの文字」を使用する方法がないため、常に問題が発生します。この場合'、Pythonは文字列リテラルの終わりであるか、文字列の終わりであるかを判断できないため、エスケープせずにそこにあります。その一部。

そして、それが私たちがそもそも逃げる理由です。したがって、あなたの質問に対する答えは次のとおりです。できません。Pythonやその他の言語ではありません。

于 2012-06-08T11:13:47.020 に答える