복붙노트

[PYTHON] 두 구분자 사이의 단어를 삭제하는 방법?

PYTHON

두 구분자 사이의 단어를 삭제하는 방법?

나는 시끄러운 데이터를 가지고있다.

<@ """@$ FSDF >something something <more noise>

이제 저는 "무언가"를 추출하고 싶습니다. 이 두 구분 기호 "<"와 ">"사이의 텍스트를 삭제하는 방법이 있습니까?

해결법

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

    1.정규식 사용 :

    정규식 사용 :

    >>> import re
    >>> s = '<@ """@$ FSDF >something something <more noise>'
    >>> re.sub('<[^>]+>', '', s)
    'something something '
    

    [최신 정보]

    <. +>와 같은 패턴을 시도한 경우 점이 문자를 의미하고 더하기 기호는 하나 이상의 문자를 의미하는 경우 작동하지 않습니다.

    >>> re.sub(r'<.+>', s, '')
    ''
    

    왜!?! 그것은 정규 표현식이 기본적으로 "탐욕 스럽기"때문에 발생합니다. 표현식은 문자열의 끝까지 무엇이든 일치 할 것입니다.> - 이것은 우리가 원하는 것이 아닙니다. 우리는 <와 일치하고 다음에 멈추고 싶기 때문에 "[x x>] 패턴을 사용합니다."x 이외의 모든 문자 "를 의미합니다 (x being>).

    ? 연산자는 "비 탐욕적"이기 때문에이 효과가 동일합니다.

    >>> re.sub(r'<.+?>', '', s)
    'something something '
    

    이전은 좀 더 명시 적이며,이 유형은 타이핑이 적습니다. x라는 것을 알고 있습니까? 0 또는 하나의 x 발생을 의미합니다.

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

    2.물론 정규 표현식을 사용할 수 있습니다.

    물론 정규 표현식을 사용할 수 있습니다.

    import re
    s = #your string here
    t = re.sub('<.*?>', '', s)
    

    위의 코드는 그렇게해야합니다.

  3. ==============================

    3.먼저 Paulo Scardine에게 감사드립니다. 나는 당신의 재를 사용하여 큰 일을했습니다. 아이디어는 인쇄용으로 무료 LibreOffice po 파일을 태그로 지정하는 것이 었습니다. 그리고 작고 쉬운 도움말 파일을 정리하는 다음 스크립트를 만들었습니다.

    먼저 Paulo Scardine에게 감사드립니다. 나는 당신의 재를 사용하여 큰 일을했습니다. 아이디어는 인쇄용으로 무료 LibreOffice po 파일을 태그로 지정하는 것이 었습니다. 그리고 작고 쉬운 도움말 파일을 정리하는 다음 스크립트를 만들었습니다.

    import re
    f = open('a.csv')
    text = f.read()
    f.close()
    
    clean = re.sub('<[^>]+>', ' ', text)
    
    f = open('b.csv', 'w')
    f.write(clean)
    f.close()
    
  4. ==============================

    4.

    import re
    my_str = '<@ """@$ FSDF >something something <more noise>'
    re.sub('<.*?>', '', my_str)
    'something something '
    

    re.sub 함수는 정규 표현식을 사용하여 문자열의 모든 일치 항목을 두 번째 매개 변수로 바꿉니다. 이 경우 <와> ( '<. *?>') 사이의 모든 문자를 검색하고 아무것도 ( '')로 바꾸고 있습니다.

    ? 비 욕심 많은 검색을 위해 re에서 사용됩니다.

    re 모듈에 대해 자세히 설명합니다.

    "노이즈"가 실제로 html 태그 인 경우 BeautifulSoup을 살펴 보시기 바랍니다.

  5. ==============================

    5.관심을 가지기 위해 다음과 같은 코드를 작성할 수 있습니다.

    관심을 가지기 위해 다음과 같은 코드를 작성할 수 있습니다.

    with open('blah.txt','w') as f:
        f.write("""<sdgsa>one<as<>asfd<asdf>
    <asdf>two<asjkdgai><iasj>three<fasdlojk>""")
    
    def filter_line(line):
        count=0
        ignore=False
        result=[]
        for c in line:
            if c==">" and count==1:
                count=0
                ignore=False
            if not ignore:
                result.append(c)
            if c=="<" and count==0:
                ignore=True
                count=1
        return "".join(result)
    
    with open('blah.txt') as f:
        print "".join(map(filter_line,f.readlines()))
    
    >>> 
    <>one<>asfd<>
    <>two<><>three<>
    
  6. from https://stackoverflow.com/questions/8784396/how-to-delete-the-words-between-two-delimiters by cc-by-sa and MIT license