2

マーク'を含むファイルを開いて読み取るとき(単語のようにすべきではありません)、Pythonはそれを\'に置き換えます(最終的にはすべきではありません)。次のコードを実行してみました。

a=open("file.txt")
b=a.read()
b=b.replace("\'", "'")

ただし、bは3行目を実行した後も同じままです。これは、「\」が「'」であるかのように読み取られるためと考えられます。助けてください。

4

2 に答える 2

6

スラッシュを2倍にする必要があります。

b=b.replace("\\'", "'")

または、r""生の文字列リテラルを使用します。

b=b.replace(r"\'", "'")

二重スラッシュまたは生の文字列リテラルがない場合、\'はを意味するespaceコードとして解釈されます'

Pythonがエスケープコードを使用して文字を表す 文字列表現を見ているのではないことを再確認してください。'

>>> '"' + "'"
'"\''
>>> print '"' + "'"
"'

上記の例では、二重引用符と一重引用符("')の両方を使用して文字列を作成し、Pythonはそれを文字列表現としてエコーします。を使用printすると、表現ではなく実際の文字列の内容が出力されます。Pythonが'私のために引用を逃れたことに注意してください。

于 2013-01-01T18:20:03.893 に答える
1

「\'」は「'」と同じです。バックスラッシュは ' をエスケープするため、その特別な機能は実行されません。この機能は、一重引用符で囲まれた文字列がある場合に便利です。たとえば、文字列 '"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
于 2013-01-01T19:58:59.360 に答える