0

"\"char を文字列に追加するにはどうすればよいですか?

たとえば、私が持っていて"testme"、私がする場合

"testme"+"\"

エラーが発生します。

"\"文字列内の各括弧の前にa を追加するための「pythonic」アプローチとは何ですか?

たとえば、から行く"(hi)" to "\(hi\)"

私の現在のアプローチは、各文字を繰り返し処理し"\"、「pythonic」ではないと感じるa を追加しようとすることです

4

2 に答える 2

9

バックスラッシュはさまざまな文字をエスケープするために使用されるため、文字列にリテラルのバックスラッシュを含めるには、次のように使用する必要があります"\\"

>>> print "testme" + "\\"
testme\

したがって、文字列内の各括弧の前にバックスラッシュを追加するには、次を使用できます。

s = s.replace('(', '\\(').replace(')', '\\)')

または正規表現で:

import re
s = re.sub(r'([()])', r'\\\1', s)

開始引用符の前に文字を追加することにより、生の文字列リテラルを使用することもできることに注意してくださいr。これにより、バックスラッシュが文字どおりに解釈され、エスケープが行われなくなります。r'foo\bar'と同じです'foo\\bar'。したがって、次のように最初のアプローチを書き直すことができます。

s = s.replace('(', r'\(').replace(')', r'\)')

生の文字列リテラルでも、バックスラッシュを使用して文字列リテラルに使用される引用符をエスケープできることに注意してください。したがって、 orr'we\'re'と同じです。これが、たとえば、最後の文字をバックスラッシュにしたい場合に生の文字列リテラルがうまく機能しない理由です(文字列リテラルは決して閉じられないため、これは構文エラーになります)。'we\'re'"we're"r'testme\'

于 2013-06-19T16:50:09.327 に答える
0
>>> import re  
>>> strs = "(hi)"
>>> re.sub(r'([()])',r'\\\g<0>',strs)
'\\(hi\\)'

"\"ここで終了引用符をエスケープしているため無効であるため、python は EOF エラーを発生させます。

\したがって、別のものを使用して最初のものをエスケープする必要があります\

>>> "\\"
'\\'
>>> "\"
  File "<ipython-input-23-bdc6fd40f381>", line 1
    "\"
      ^
SyntaxError: EOL while scanning string literal

>>> 
于 2013-06-19T16:48:32.727 に答える