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

    달러 금액을 파이썬 문자열의 ""태그로 대체해야합니다. 이것은 내가 지금까지 알아 낸 것입니다 : 여기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' 
    

    가.

    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}을 지정 해달라고 한 기본 동작

    입니다 필요 BTW 경우 ... 무엇을해야합니다
    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'. 위의 버전은 소수점 두 자리 뒤에 오는 것을 확인합니다. 또한이 십진수 캡쳐는 캡쳐되지 않은 괄호 안쪽에 있습니다. 그러나 캡쳐 링되지 않은 괄호는 캡쳐 괄호 안에 여전히 있기 때문에 괜찮습니다. 자세한 내용은 https://docs.python.org/3/library/re.html을 참조하십시오.

    관련 문제