복붙노트

[PYTHON] 정규식을 사용하여 파이썬에서 문자열에서 태그를 제거하는 방법은 무엇입니까? (HTML에는 없음)

PYTHON

정규식을 사용하여 파이썬에서 문자열에서 태그를 제거하는 방법은 무엇입니까? (HTML에는 없음)

난 파이썬에서 문자열에서 태그를 제거해야합니다.

<FNT name="Century Schoolbook" size="22">Title</FNT>

"제목"만 남겨두고 양쪽에서 전체 태그를 제거하는 가장 효율적인 방법은 무엇입니까? 필자는 HTML 태그를 사용하여이 작업을 수행하는 방법을 보았지만 파이썬에서는 제대로 작동하지 않았습니다. 저는 특히 GIS 프로그램 인 ArcMap에 이것을 사용하고 있습니다. 그것은 그것의 레이아웃 요소에 대한 자신의 태그가 있고, 난 단지 두 개의 특정 제목 텍스트 요소에 대한 태그를 제거해야합니다. 나는 정규식이 잘 작동해야한다고 생각하지만, 나는 다른 제안을 할 수있다.

해결법

  1. ==============================

    1.이 작동합니다.

    이 작동합니다.

    import re
    re.sub('<[^>]*>', '', mystring)
    

    정규 표현식이 그 일을위한 올바른 도구가 아니라는 모든 사람들에게 :

    문제의 문맥은 정규 / 문맥 - 자유 언어에 관한 모든 반대가 무효하다는 것이다. 그의 언어는 기본적으로 a = <, b => 및 c = [^> <] +의 세 엔티티로 구성됩니다. 그는 acb의 발생을 제거하려고합니다. 이것은 문맥없는 문법을 포함하는 것으로서 자신의 문제를 공정하게 직접적으로 특징 짓고, 규칙적인 문법으로 특성화하는 것이 그리 어렵지 않습니다.

    모든 사람들이 "정규 표현식으로 HTML을 파싱 할 수는 없다"라는 대답을 알고 있지만 OP는 구문 분석하기를 원치 않으므로 단순한 변환을 수행하기를 원합니다.

  2. ==============================

    2.이 정규식을 검색하고 빈 문자열로 바꾸면 작동합니다.

    이 정규식을 검색하고 빈 문자열로 바꾸면 작동합니다.

    /<[A-Za-z\/][^>]*>/
    

    예제 (파이썬 셸에서) :

    >>> import re
    >>> my_string = '<FNT name="Century Schoolbook" size="22">Title</FNT>'
    >>> print re.sub('<[A-Za-z\/][^>]*>', '', my_string)
    Title
    
  3. ==============================

    3.구문 분석 및 값 검색만을위한 것이라면 BeautifulStoneSoup를 살펴보십시오.

    구문 분석 및 값 검색만을위한 것이라면 BeautifulStoneSoup를 살펴보십시오.

  4. ==============================

    4.regex를 사용하지 마십시오. Eventhough regex는 간단한 문자열에서 작동하지만 복잡한 연산자를 사용하면 나중에 문제가 발생할 수 있습니다.

    regex를 사용하지 마십시오. Eventhough regex는 간단한 문자열에서 작동하지만 복잡한 연산자를 사용하면 나중에 문제가 발생할 수 있습니다.

    BeautifulSoup get_text () 기능을 사용할 수 있습니다.

    from bs4 import BeautifulSoup
    
    text = '<FNT name="Century Schoolbook" size="22">Title</FNT>'
    soup = BeautifulSoup(text)
    
    print(soup.get_text())
    
  5. ==============================

    5.소스 텍스트가 올바른 형식의 XML이면 stdlib 모듈 인 ElementTree를 사용할 수 있습니다.

    소스 텍스트가 올바른 형식의 XML이면 stdlib 모듈 인 ElementTree를 사용할 수 있습니다.

    import xml.etree.ElementTree as ET
    mystring = """<FNT name="Century Schoolbook" size="22">Title</FNT>"""
    element = ET.XML(mystring)
    print element.text  # 'Title'
    

    소스의 형식이 올바르지 않으면 BeautifulSoup가 좋은 제안입니다. 몇 가지 포스터가 지적한 것처럼 정규 표현식을 사용하여 태그를 파싱하는 것은 좋은 생각이 아닙니다.

  6. ==============================

    6.ElementTree와 같은 XML 파서를 사용하십시오. 정규 표현식은이 작업에 적합한 도구가 아닙니다.

    ElementTree와 같은 XML 파서를 사용하십시오. 정규 표현식은이 작업에 적합한 도구가 아닙니다.

  7. from https://stackoverflow.com/questions/3662142/how-to-remove-tags-from-a-string-in-python-using-regular-expressions-not-in-ht by cc-by-sa and MIT license