python
  • regex
  • replace
  • dollar-sign
  • 2017-12-17 8 views 0 likes 
    0

    ドル金額をPythonの文字列の ""タグに置き換える必要があります。これは私がこれまでに考え出したものである:ここでは文字列すべての金額を特定の文字列に置き換えます。

    私の文字列です:私が正しく、すべての金額を見つけることができます。この正規表現で

    s = 'Accounts and current portion of notes receivable, net of allowances of $2,199 and $2,506 at July 2, 2011 and October 2, 2010, respectively' 
    

    が。

    re.findall(r"[\$]{1}[\d,]+\.?\d{0,2}",s) 
    

    は私を与える:

    ['$2,199', '$2,506'] 
    

    をしかし、私は元の文字列に "" と金額を交換したいです。それ、どうやったら出来るの?

    出力期待

    'Accounts and current portion of notes receivable, net of allowances of <amount> and <amount> at July 2, 2011 and October 2, 2010, respectively' 
    

    答えて

    0

    多分

    re.sub(r"[\$]{1}[\d,]+\.?\d{0,2}","<amount>",s) 
    

    は何が必要でしょう...ところであなただけの1を必要とする場合は、それがデフォルトの動作

    あるとして {1}を指定する必要がいけません
    0

    次のように置き換えてください:

    s1 = re.sub("\$([\d,]+\.?\d{0,2})", '<amount>', s) 
    #   ^   ^
    

    しかし

    s1 = re.sub("\$([\d,]+(?:\.\d{2})?)", '<amount>', s) 
    #   ^ %   %^
    # in between '^' matches the entire dollar amount 
    # in between '%' matches the decimal part 
    

    良いかもしれません。

    括弧内の部分が一致する部分で、置換文字列で置き換えられます。ドル記号を見つけたら、次の数字とカンマをすべて取得します。したがって、キャレットでマークされた括弧の間にあるのは、置き換えられる一致部分です。小数点以下の処理部分には少し微調整があります。あなたのコードで、あなたはちょうど 'と一致することができます。または '.5'。上記のバージョンでは、小数点に2桁の数字が続くことを確認しています。また、この小数点のキャプチャは、非キャプチャ括弧内にあることに注意してください。しかし、これは大丈夫です。なぜなら、キャプチャしていない括弧はキャプチャ括弧内にまだ残っているからです。詳細はhttps://docs.python.org/3/library/re.htmlを参照してください。

    関連する問題