2017-06-25 16 views
3

PythonとJsonに関する質問があります。 私はdiscordを使ってdiscordのためにbotをコーディングしています。私はconfigファイルを持っていました。私のコードでは、Pythonファイルにある変数の文字列を置き換える必要があります。文字列をJsonのPythonに置き換えてください。

これは私の現在のコードです:

#change prefix 
@bot.command(pass_context=True) 
async def prefix(ctx, newprefix): 
    with open("config.json", 'a+') as f: 
     stringified = JSON.stringify(json) 
     stringified.replace('"prefix" : prefix, "prefix" : newprefix') 
    await ctx.send("Prefix set to: `{}`. New prefix will be applied after restart.".format(newprefix)) 
    author = ctx.message.author 
    print(author, "has changed the prefix to: {}".format(newprefix)) 

と:私はコマンド入力すると

{ 
    "nowplaying":"with buttons", 
    "ownerid":"173442411878416384", 
    "prefix":"?", 
    "token":"..." 
} 

?prefix *newprefix*を、不和や端末での出力がない、何も変わりません。誰も私にこれを行う方法を示すことができますか?

+0

あなたが 'newprefix' は 'プレフィックス' を置換したいですか? – zaidfazil

答えて

3

str.replaceは、インプレース操作ではありません。観察:

>>> string = 'testing 123' 
>>> string.replace('123', '') 
'testing ' 
>>> string 
'testing 123' 

置き換えられた文字列をオリジナルに割り当てる必要があります。有効な答えを@Coldspeedするほか

+0

私がしているとき: stringified = stringified.replace( '接頭辞':接頭辞、 "接頭辞":newprefix) stringified.replace( '接頭辞'、 'newprefix') 出力はありません。 – incredaboy

+0

@incredaboy自分の編集を確認してください。 –

0

、あなたはstr.replace()関数を使用する方法に注意を払う必要があります:これに

stringified.replace('"prefix" : prefix, "prefix" : newprefix') 

:だから、この行を変更

私はunderst場合 '"prefix" : prefix, "prefix" : newprefix'

:ここ

stringified.replace('"prefix" : prefix, "prefix" : newprefix') 

は、あなたが交換するだけで1引数を渡します

これは、JSONの元の文字列が置き換えられることを確認します。しかし、あまり柔軟でないstr.replace()の代わりに、:文字の前後にスペースがあっても、正規表現を使用して文字列置換を行うことをお勧めします。

例:

stringified = re.sub(r'("prefix"\s?:\s?)"(\?)"', r'\1"{}"'.format(newprefix), stringified) 
関連する問題