>

내 문자열은

'21,300 32,709 30,391 29,901 22,270 31,201 31,199 27,806 23,210 28,418 28,940 32,496 16.9%'

16.9 %를 제외한 모든 숫자를 어떻게 찾을 수 있습니까?

사용했습니다

pattern = re.compile(r'\d+,*\d*(?!%)')

하지만 작동하지 않았습니다.

감사합니다!


  • 답변 # 1

    re.findall 를 사용할 수 있습니다  이러한 패턴 예제와 함께 :

    import re
    a = '21,300 32,709 30,391 29,901 22,270 31,201 31,199 27,806 23,210 28,418 28,940 32,496 16.9%'
    final = re.findall(r'(\d+)[,\s]', a)
    # Or:
    # final = re.findall(r'(\d+)[^\d\.%]', a)
    
    

    둘 다 출력합니다 :

    print(final)
    ['21', '300', '32', '709', '30', '391', '29', '901', '22', '270', '31', '201', '31', '199', '27', '806', '23', '210', '28', '418', '28', '940', '32', '496']
    
    

  • 답변 # 2

    import re
    a = '21,300 32,709 30,391 29,901 22,270 31,201 31,199 27,806 23,210 28,418 28,940 32,496 16.9%'
    re.findall(r'\d+.\d+%', a)
    
    

    이 정규 표현식은 원하는 비율을 포착합니다. 기본적으로 점 '으로 구분 된 하나 이상의 숫자가있는'% '로 모든 것을 잡습니다.

관련 자료

  • 이전 C에서 트리플 데 cbc 암호화
  • 다음 perl6 - 기본 현지 시간 () segfaults