[PYTHON] 두 구분자 사이의 단어를 삭제하는 방법?
PYTHON두 구분자 사이의 단어를 삭제하는 방법?
나는 시끄러운 데이터를 가지고있다.
<@ """@$ FSDF >something something <more noise>
이제 저는 "무언가"를 추출하고 싶습니다. 이 두 구분 기호 "<"와 ">"사이의 텍스트를 삭제하는 방법이 있습니까?
해결법
-
==============================
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.물론 정규 표현식을 사용할 수 있습니다.
물론 정규 표현식을 사용할 수 있습니다.
import re s = #your string here t = re.sub('<.*?>', '', s)
위의 코드는 그렇게해야합니다.
-
==============================
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.
import re my_str = '<@ """@$ FSDF >something something <more noise>' re.sub('<.*?>', '', my_str) 'something something '
re.sub 함수는 정규 표현식을 사용하여 문자열의 모든 일치 항목을 두 번째 매개 변수로 바꿉니다. 이 경우 <와> ( '<. *?>') 사이의 모든 문자를 검색하고 아무것도 ( '')로 바꾸고 있습니다.
? 비 욕심 많은 검색을 위해 re에서 사용됩니다.
re 모듈에 대해 자세히 설명합니다.
"노이즈"가 실제로 html 태그 인 경우 BeautifulSoup을 살펴 보시기 바랍니다.
-
==============================
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<>
from https://stackoverflow.com/questions/8784396/how-to-delete-the-words-between-two-delimiters by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] python zipfile 모듈이 내 파일을 압축하지 않는 것 같습니다. (0) | 2018.11.04 |
---|---|
[PYTHON] Windows 10의 작업 스케줄러에서 .py 파일 예약 (0) | 2018.11.04 |
[PYTHON] 파이썬에서 함수를 중첩 할 때 오버 헤드가 있습니까? (0) | 2018.11.04 |
[PYTHON] 자동 테스트 세트에 대해 setUp을 한 번만 실행하십시오. (0) | 2018.11.04 |
[PYTHON] request.user SimpleLazyObject를 반환합니다, 어떻게 ""나요? (0) | 2018.11.04 |