Python을 사용하여 텍스트 구문 분석

Python을 사용하여 텍스트 구문 분석

이 텍스트가 있습니다.

{bc}having or marked by great {a_link|volume} or bulk {bc}{sx|large

나는 이런 것을 얻으려고 노력하고 있습니다.

having or marked by great volume or bulk

정규식 모듈을 사용하여 이 작업을 수행하려고 합니다.

import re

text = "{bc}having or marked by great {a_link|volume} or bulk {bc}{sx|large"

new_text1 = re.sub("{","",text)
new_text2 = re.sub("}","",new_text1)
new_text3 = re.sub("a_link","",new_text2)
new_text4 = re.sub("|","",new_text3)
final_text = re.sub("bcsx.*","",new_text4)

그래야만 원하는 결과를 얻을 수 있었지만 5단계가 걸렸습니다! 이 작업을 더 쉽게 수행할 수 있습니까?

답변1

사용행복하다(이전 Perl_6)

명령줄에서:

~$ raku -pe 's:g/ \{ .*? [ \} | $ ]//;'  file

또는

~$ raku -pe 's:g{ \{ .*? [ \} | $ ] } = "";'  file

꼭 파이썬이어야 하나요? Raku는 특히 정규식을 통해 까다로운 유니코드 텍스트를 처리하려는 경우 좋은 선택입니다. 위(예 1)에서는 익숙한 s///대체 연산자가 사용되었습니다. 예제 2에서는 Raku의 최신 "할당" 대체 형식을 사용합니다(예 s{…} = "…": .

위의 예 중 하나: Raku는 \{왼쪽 공상, .*?0개 이상의 문자 인스턴스(탐욕적이지 않은 검색)를 검색한 다음 오른쪽 공상 또는( 파이프라인 연산자) 로 구성된 [... ]괄호로 구분된 그룹이 뒤따릅니다. 너비가 0인 어설션으로 끝나는 문자열입니다.\}|$

이 정규식 솔루션은 중첩된 중괄호 문제를 해결하지 못한다는 점에 유의해야 합니다. 내포된 지지대를 사용하려면 다음을 참고하세요.중첩된 구조 물결표.

입력 예:

{bc}having or marked by great {a_link|volume} or bulk {bc}{sx|large

예제 출력:

having or marked by great  or bulk 

https://docs.raku.org/언어/operators#s///_in-place_substitution
https://raku.org/

관련 정보