복붙노트

[PYTHON] Word 2007 .docx 파일에서 단어를 검색하려면 어떻게해야합니까?

PYTHON

Word 2007 .docx 파일에서 단어를 검색하려면 어떻게해야합니까?

Word 2007 파일 (.docx)에서 Word 내 검색에서 찾을 수있는 "some special phrase"와 같은 텍스트 문자열을 검색하고 싶습니다.

파이썬에서 텍스트를 볼 수있는 방법이 있습니까? 형식화에 관심이 없습니다. 문서를 "특수 문구"가 있거나없는 것으로 분류하고 싶습니다.

해결법

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

    1.좀더 정확히 말하자면, .docx 문서는 OpenXML 형식의 Zip 아카이브입니다 : 먼저 압축을 풀어야합니다. 샘플 (Google : 일부 검색어 파일 유형 : docx)을 다운로드 한 후 압축을 푼 후 일부 폴더를 찾았습니다. 폴더라는 단어는 document.xml 파일에 문서 자체를 포함합니다.

    좀더 정확히 말하자면, .docx 문서는 OpenXML 형식의 Zip 아카이브입니다 : 먼저 압축을 풀어야합니다. 샘플 (Google : 일부 검색어 파일 유형 : docx)을 다운로드 한 후 압축을 푼 후 일부 폴더를 찾았습니다. 폴더라는 단어는 document.xml 파일에 문서 자체를 포함합니다.

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

    2.위의 게시물을 읽은 후이 특정 문제를 해결하기 위해 100 % 기본 Python docx 모듈을 만들었습니다.

    위의 게시물을 읽은 후이 특정 문제를 해결하기 위해 100 % 기본 Python docx 모듈을 만들었습니다.

    # Import the module
    from docx import *
    
    # Open the .docx file
    document = opendocx('A document.docx')
    
    # Search returns true if found    
    search(document,'your search string')
    

    docx 모듈은 https://python-docx.readthedocs.org/en/latest/에 있습니다.

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

    3.이 예에서 "Course Outline.docx"는 Word 2007 문서이며 "Windows"라는 단어를 포함하고 "임의의 다른 문자열"이라는 구를 포함하지 않습니다.

    이 예에서 "Course Outline.docx"는 Word 2007 문서이며 "Windows"라는 단어를 포함하고 "임의의 다른 문자열"이라는 구를 포함하지 않습니다.

    >>> import zipfile
    >>> z = zipfile.ZipFile("Course Outline.docx")
    >>> "Windows" in z.read("word/document.xml")
    True
    >>> "random other string" in z.read("word/document.xml")
    False
    >>> z.close()
    

    기본적으로 zipfile을 사용하여 docx 파일 (zip 아카이브)을 열고 'word'폴더의 'document.xml'파일에서 내용을 찾습니다. 보다 정교 해지고 싶다면 XML을 파싱 할 수 있지만, 태그가 아는 ​​문구를 찾고 있다면 XML에서 문자열을 찾아 볼 수 있습니다.

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

    4.Word 문서 XML 파일 내에서 검색 할 때 문제는 텍스트를 모든 문자의 요소로 나눌 수 있다는 것입니다. 예를 들어, Hello World에서와 같이 형식이 다른 경우 확실히 분리됩니다. 그러나 어느 시점에서든 분리 될 수 있으며 이는 OOXML에서 유효합니다. 따라서 구문의 중간에서 형식이 변경되지 않더라도 XML을 처리하게 될 것입니다.

    Word 문서 XML 파일 내에서 검색 할 때 문제는 텍스트를 모든 문자의 요소로 나눌 수 있다는 것입니다. 예를 들어, Hello World에서와 같이 형식이 다른 경우 확실히 분리됩니다. 그러나 어느 시점에서든 분리 될 수 있으며 이는 OOXML에서 유효합니다. 따라서 구문의 중간에서 형식이 변경되지 않더라도 XML을 처리하게 될 것입니다.

    <w:p w:rsidR="00C07F31" w:rsidRDefault="003F6D7A">
    
    <w:r w:rsidRPr="003F6D7A">
    
    <w:rPr>
    
    <w:b /> 
    
    </w:rPr>
    
    <w:t>Hello</w:t> 
    
    </w:r>
    
    <w:r>
    
    <w:t xml:space="preserve">World.</w:t> 
    
    </w:r>
    
    </w:p>
    

    물론 XML DOM 트리에로드 할 수 있으며 (파이썬에서 이것이 무엇인지는 모르겠다.) 텍스트 만 문자열로 가져 오도록 요청할 수 있지만, OOXML 스펙이 주위에 있기 때문에 다른 많은 "막 다른 골목"으로 끝날 수있다. 6000 페이지 길이의 MS 워드는 예상하지 못한 많은 "물건"을 쓸 수 있습니다. 따라서 자신 만의 문서 처리 라이브러리를 작성할 수 있습니다.

    또는 Aspose.Words를 사용해보십시오.

    .NET 및 Java 제품으로 사용할 수 있습니다. 둘 다 파이썬에서 사용할 수 있습니다. 하나는 COM을 통해 JPype을 통해 다른 프로그램과 상호 작용합니다. Aspose.Words 프로그래머 가이드를 참조하십시오. Aspose.Words를 다른 프로그래밍 언어로 사용하십시오 (미안하지만 두 번째 링크를 게시 할 수 없습니다. stackoverflow는 아직 허용하지 않습니다).

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

    5.docx는 많은 파일이 들어있는 zip 아카이브 일뿐입니다. 어쩌면 그 파일의 일부 내용을 볼 수 있을까요? 그 외에도 아마도 관심없는 단어를 필터링 할 수 있도록 단어 형식을 이해하는 라이브러리를 찾아야 할 것입니다.

    docx는 많은 파일이 들어있는 zip 아카이브 일뿐입니다. 어쩌면 그 파일의 일부 내용을 볼 수 있을까요? 그 외에도 아마도 관심없는 단어를 필터링 할 수 있도록 단어 형식을 이해하는 라이브러리를 찾아야 할 것입니다.

    두 번째 선택은 단어와 상호 작용하고 검색을 수행하는 것입니다.

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

    6.docx2txt를 사용하여 docx 내부의 텍스트를 검색 할 수 있습니다.

    docx2txt를 사용하여 docx 내부의 텍스트를 검색 할 수 있습니다.

    npm install -g docx2txt
    docx2txt input.docx # This will  print the text to stdout
    
  7. ==============================

    7.docx 파일은 본질적으로 xml이 들어있는 zip 파일입니다. xml에는 서식이 포함되어 있지만 텍스트도 포함됩니다.

    docx 파일은 본질적으로 xml이 들어있는 zip 파일입니다. xml에는 서식이 포함되어 있지만 텍스트도 포함됩니다.

  8. ==============================

    8.OLE 자동화가 가장 쉬울 것입니다. 텍스트는 XML에서 다음과 같을 수 있으므로 서식을 고려해야합니다.

    OLE 자동화가 가장 쉬울 것입니다. 텍스트는 XML에서 다음과 같을 수 있으므로 서식을 고려해야합니다.

    <b>Looking <i>for</i> this <u>phrase</u>
    

    간단한 텍스트 스캔을 사용하여 쉽게 찾을 수있는 방법은 없습니다.

  9. ==============================

    9.MSWord ActiveX 인터페이스를 사용하여 검색 할 텍스트를 추출하거나 검색을 수행 할 수 있어야합니다. 어떻게 파이썬에서 ActiveX에 액세스하는지 모르겠다.

    MSWord ActiveX 인터페이스를 사용하여 검색 할 텍스트를 추출하거나 검색을 수행 할 수 있어야합니다. 어떻게 파이썬에서 ActiveX에 액세스하는지 모르겠다.

  10. ==============================

    10.OpenXMLDeveloper.org에서 라이브러리를 사용할 수도 있습니다.

    OpenXMLDeveloper.org에서 라이브러리를 사용할 수도 있습니다.

  11. from https://stackoverflow.com/questions/116139/how-can-i-search-a-word-in-a-word-2007-docx-file by cc-by-sa and MIT license