マーク'を含むファイルを開いて読み取るとき(単語のようにすべきではありません)、Pythonはそれを\'に置き換えます(最終的にはすべきではありません)。次のコードを実行してみました。
a=open("file.txt")
b=a.read()
b=b.replace("\'", "'")
ただし、bは3行目を実行した後も同じままです。これは、「\」が「'」であるかのように読み取られるためと考えられます。助けてください。
マーク'を含むファイルを開いて読み取るとき(単語のようにすべきではありません)、Pythonはそれを\'に置き換えます(最終的にはすべきではありません)。次のコードを実行してみました。
a=open("file.txt")
b=a.read()
b=b.replace("\'", "'")
ただし、bは3行目を実行した後も同じままです。これは、「\」が「'」であるかのように読み取られるためと考えられます。助けてください。
スラッシュを2倍にする必要があります。
b=b.replace("\\'", "'")
または、r""
生の文字列リテラルを使用します。
b=b.replace(r"\'", "'")
二重スラッシュまたは生の文字列リテラルがない場合、\'
はを意味するespaceコードとして解釈されます'
。
Pythonがエスケープコードを使用して文字を表す 文字列表現を見ているのではないことを再確認してください。'
>>> '"' + "'"
'"\''
>>> print '"' + "'"
"'
上記の例では、二重引用符と一重引用符("'
)の両方を使用して文字列を作成し、Pythonはそれを文字列表現としてエコーします。を使用print
すると、表現ではなく実際の文字列の内容が出力されます。Pythonが'
私のために引用を逃れたことに注意してください。
「\'」は「'」と同じです。バックスラッシュは ' をエスケープするため、その特別な機能は実行されません。この機能は、一重引用符で囲まれた文字列がある場合に便利です。たとえば、文字列 '"shouldn\'t"' は "shouldn't" として出力されます。
Python 3.3.0 (default, Dec 22 2012, 21:02:07)
[GCC 4.7.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 'shouldn't'
File "<stdin>", line 1
a = 'shouldn't'
^
SyntaxError: invalid syntax
>>> a = 'shouldn\'t'
>>> a
"shouldn't"
>>> a = '"shouldn\'t'
>>> a
'"shouldn\'t'
>>> print(a)
"shouldn't