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

    Ich muss Dollar-Beträge mit einem "" Tag in Zeichenfolge in Python ersetzen. Dies ist, was ich bisher herausgefunden:String ersetzen alle Dollar-Beträge mit einer spezifischen Zeichenfolge

    Hier ist mein string:

    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' 
    

    Mit diesem regulären Ausdruck ich all Dollar-Beträge richtig finden.

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

    gibt mir:

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

    Allerdings möchte ich die Dollar-Beträge mit "" in der ursprünglichen Zeichenfolge ersetzen. Wie mache ich das?

    Erwarteter Ausgang:

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

    Antwort

    0

    vielleicht

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

    wird tun, was Sie brauchen ... btw, wenn Sie benötigen nur eine Sie

    {1} wie das ist das Standardverhalten angeben müssen nicht
    0

    Sie können Ihre Ersetzungen vornehmen mit:

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

    aber

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

    könnte besser sein.

    Der Teil innerhalb der Klammern ist der passende Teil, der durch Ihre Ersetzungszeichenfolge ersetzt wird. Nachdem wir das Dollarzeichen gefunden haben, greifen wir alle folgenden Ziffern und Kommata. Was also zwischen den Klammern steht, die mit dem Caret markiert sind, ist der passende Teil, der ersetzt wird. Es gibt eine kleine Änderung an der Dezimalkomponente. Mit Ihrem Code könnten Sie nur '.' oder ".5". Die obige Version stellt sicher, dass ein Dezimalpunkt gefolgt von zwei Ziffern erfasst wird. Beachten Sie auch, dass diese Dezimalerfassung innerhalb von nicht erfassbaren Klammern erfolgt. Dies ist jedoch in Ordnung, da die nicht erfassenden Klammern sich immer noch in Klammern befinden. Weitere Informationen finden Sie unter https://docs.python.org/3/library/re.html.

    Verwandte Themen