はあなたの援助のために事前にありがとう...のpython3、「 n」や「『『の可能ユーザの入力文字が、』\ nを『と』\に置き換え』」
私がコーディングしていますJSONレスポンスを使用するAPI。私はPython 3.5.1でコーディングしています。私はユーザーがSlackのチャットに提出したいと思っている定義済みのメッセージを入力できるようにしています。そして、Slackの構文は改行のために\ nを使うので、私のアプリはメッセージのフォーマットを '\ n' \ nスラックが見る必要がある\ nをプリントアウトするのではなく、単に文の中に新しい行を追加したいので、 '\ n'は自然に私のPythonを台無しにしています。
私がやったと思ったのは、単純に.replace( '\ n'、 '\\ n')なので、JSONは意図された '\ n'を得て、Pythonを気にしません。これはうまく動作しますが、私はまた、 "'"のインスタンスについてユーザーのメッセージをチェックし、 "\\'"と置き換える必要がありますので、自分のデータベースのSQLステートメントを妨げません。
私は辞書と、特定の文字のインスタンスをチェックし、一度にそれらを対応する値に置き換える方法を作っていると考えました。 strIn = "?あなた\ '再\ ngreatちゃん\で' あなたが知っているのLの\ nsurfingドン\ 'tは":
def replace_all(strIn):
keywords = {"'": "\\'", "\n": "\\n"}
for a, b in keywords.items():
strOut = strIn.replace(a, b)
return strOut
はこれをテストするには:ここで
は、私がこれまで持っているものです私のメソッドを実行すると、正しく "'": "\\'"をキャッチしますが、 "\ n": "\\ n"は無視されます。別のstrIn.replace( "\ n": "\\ n")とstrIn.replace( "'": "\\'")としてこれらを実行すると動作します。私の方法で何が間違っていますか?
私はそれは私がしかし、それは非常にPython的に非常に冗長ではないたかったまさに行い、次のない場合:
更新 Vaylain
、ご協力ありがとうございました
def checkString(self, strIn):
keywords1 = {"'": "\\'"}
keywords2 = {"\n": "\\n"}
for a, b in keywords1.items():
pass1 = strIn.replace(a, b)
for a, b in keywords2.items():
strOut = pass1.replace(a, b)
return strOut
両方のdictsを1つに結合し、2つではなく2つの方法で動作するメソッドを取得する方法については、入力文字列を渡しますか?
"...ので、JSONはまだ取得します..."何ですか? JSONは何を得る必要がありますか?あなたはそれをエンコードします。 –