'I can't parse this' のような文字列の間に一重引用符が含まれている場合、構文エラーを発生させずにそれを削除し、ICANTPARSETHIS を返すにはどうすればよいですか? 代わりに「これを解析できません」であれば機能することはわかっていますが、潜在的な入力に二重引用符が含まれていない可能性があるという問題を調べています。
3 に答える
あなたはここで何かを誤解しています。ここは全く問題ありません。
構文エラーはソース コードにのみ適用されます。文字列値はソース コードではありません。
ソース コードで文字列リテラルが使用されている場合、Python はそれらを解析して文字列値を生成します。文字列リテラルには構文エラーが含まれている可能性がありますが、エラーがなければ、まさにその値である文字列値が生成されます。
Python インタープリターでは、このような文字列値は、デバッグとインタープリターへのコピーを容易にするために、文字列リテラルと同じ形式を使用して表されます。Python インタープリターは、そのような値の引用符を正しくエスケープする方法を知っているので安心してください。
>>> """Text with a single quote: '"""
"Text with a single quote: '"""
>>> """We can use a double quote too: ". See?"""
'We can use a double quote too: ". See?'
>>> """Even mixing " and ' is not a problem."""
'Even mixing " and \' is not a problem.'
そこでは三重引用符で囲まれたリテラル構文を使用しましたが、Python は必要最小限の引用スタイルを使用する代替をエコーし、必要に応じて引用記号をエスケープします。
print "Parse 'this string' to something".split()
print re.findall(some_pattern,"this is a string with `internal quotation` marks")
print 'quotes' == "quotes" == """quotes""" == '''quotes''' == u'quotes' == u"quotes"
あなたの質問が何であるかわかりません...しかし、これらの2つの例は、内部引用符で文字列を解析できることを示しています
また、引用符が基本的にすべて同じであることも示しています
私の理解では、「できない」のアポストロフィを削除したいということですか?
'I can't parse this'.replace("'", "")
>>> 'I cant parse this'
または変数にある場合:
s = 'I can\'t parse this'
s.replace("'", "")
>>> 'I cant parse this'
編集:指摘したように、2 番目の例は、アポストロフィにエスケープ文字がない構文エラーでした。