2014-12-23 2 views
0

<font color='#FF0000'> and </font> 사이에 텍스트 정보를 추출하는 데 사용하려는 다음 코드가 있습니다. 그것은 잘 작동하지만 그것은 단지 하나의 단위 (첫 번째)를 추출하는 반면 나는이 태그 사이의 모든 텍스트 단위를 추출하고 싶습니다. 나는 bash 루프 코드로 이것을 시도했지만 작동하지 않았다.Python으로 텍스트 추출 반복

import os 

directory_path ='C:\\My_folder\\tmp' 

    for files in os.listdir(directory_path): 

    print(files) 

    path_for_files = os.path.join(directory_path, files) 

    text = open(path_for_files, mode='r', encoding='utf-8').read() 

    starting_tag = '<font color=' 
    ending_tag = '</font>' 

    ground = text[text.find(starting_tag):text.find(ending_tag)] 

    results_dir = 'C:\\My_folder\\tmp' 
    results_file = files[:-4] + 'txt' 

    path_for_files = os.path.join(results_dir, results_file) 

    open(path_for_files, mode='w', encoding='UTF-8').write(result) 
+0

는 내가 모든 하나 이상을 원하는 경우 find_all 같은 것을 사용해야합니다 상상. –

답변

2

Beautiful Soup의 CSS 선택기를 사용할 수 있습니다.

>>> from bs4 import BeautifulSoup 
>>> s = "foo <font color='#FF0000'> foobar </font> bar" 
>>> soup = BeautifulSoup(s, 'lxml') 
>>> for i in soup.select('font[color="#FF0000"]'): 
    print(i.text) 


foobar 
+0

의견을 보내 주셔서 감사합니다.하지만 BeautifulSoup에 문제가 있습니다. 예전의 "ImportError : No 모듈 이름이 BeautifulSoup"이며 제안 된 솔루션 중 아무 것도 나에게 적합하지 않습니다. – user3635159

+0

beautifulsoup을 가져와야합니다. 아직 설치되지 않은 경우 설치하십시오. –

+0

예, 알고 있습니다. 설치했지만 어떻게 든 가져올 수 없습니다. 나는 다른 제안을 읽었지 만 그들 중 누구도 나를 위해 일하지 않았다. 내 컴퓨터에 Python 버전이 3 개 설치되어있는 것이 문제 일 수 있습니다. 필자는 다른 패키지와 함께 그런 문제를 겪어 보지 못했습니다. – user3635159

0
You can also use lxml.html 

>>> import lxml.html as PARSER 
>>> s = "<html><body>foo <font color='#FF0000'> foobar </font> bar</body></html>" 
>>> root = PARSER.fromstring(s) 
>>> for i in root.getiterator("font"): 
... try: i.attrib["color"] 
... except:pass 
+0

여기서 's'은 (는) httml 파일입니까? html 또는 xml 파일이 들어있는 디렉토리로 바꾸려면 어떻게 작동합니까? 또한 귀하의 스크립트는 '# FF0000'을 추출하고 색상 태그 사이에 강조 표시된 텍스트를 추출합니다. ** 텍스트 텍스트 텍스트 ** – user3635159

+0

"s" html 파일의 내용입니다. 디렉토리에서 html/xml 파일에 "for"루프를 적용해야합니다. os.listdir ("/ tmp/target_html /") 및 파일 읽기 메소드를 사용하십시오. 예, 'font'태그의 텍스트가 누락되었습니다. >>> root = PARSER.fromstring (s) >>> for root.getiterator ("font") : ... 시도 : ... if iattatt [ "color"] == " # FF0000 ": ... 인쇄 i.text ... 제외 : ... 패스 –

+0

답장을 보내 주셔서 감사합니다. 나는 여전히 Python에 대해 꽤 새로운 편이다. 당신의 제안이나 @Avinash Raj가 내 대본에 제안한 것을 정확히 어떻게 결합해야하는지 알려주시겠습니까? – user3635159