[PYTHON] Word 2007 .docx 파일에서 단어를 검색하려면 어떻게해야합니까?
PYTHONWord 2007 .docx 파일에서 단어를 검색하려면 어떻게해야합니까?
Word 2007 파일 (.docx)에서 Word 내 검색에서 찾을 수있는 "some special phrase"와 같은 텍스트 문자열을 검색하고 싶습니다.
파이썬에서 텍스트를 볼 수있는 방법이 있습니까? 형식화에 관심이 없습니다. 문서를 "특수 문구"가 있거나없는 것으로 분류하고 싶습니다.
해결법
-
==============================
1.좀더 정확히 말하자면, .docx 문서는 OpenXML 형식의 Zip 아카이브입니다 : 먼저 압축을 풀어야합니다. 샘플 (Google : 일부 검색어 파일 유형 : docx)을 다운로드 한 후 압축을 푼 후 일부 폴더를 찾았습니다. 폴더라는 단어는 document.xml 파일에 문서 자체를 포함합니다.
좀더 정확히 말하자면, .docx 문서는 OpenXML 형식의 Zip 아카이브입니다 : 먼저 압축을 풀어야합니다. 샘플 (Google : 일부 검색어 파일 유형 : docx)을 다운로드 한 후 압축을 푼 후 일부 폴더를 찾았습니다. 폴더라는 단어는 document.xml 파일에 문서 자체를 포함합니다.
-
==============================
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.이 예에서 "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.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.docx는 많은 파일이 들어있는 zip 아카이브 일뿐입니다. 어쩌면 그 파일의 일부 내용을 볼 수 있을까요? 그 외에도 아마도 관심없는 단어를 필터링 할 수 있도록 단어 형식을 이해하는 라이브러리를 찾아야 할 것입니다.
docx는 많은 파일이 들어있는 zip 아카이브 일뿐입니다. 어쩌면 그 파일의 일부 내용을 볼 수 있을까요? 그 외에도 아마도 관심없는 단어를 필터링 할 수 있도록 단어 형식을 이해하는 라이브러리를 찾아야 할 것입니다.
두 번째 선택은 단어와 상호 작용하고 검색을 수행하는 것입니다.
-
==============================
6.docx2txt를 사용하여 docx 내부의 텍스트를 검색 할 수 있습니다.
docx2txt를 사용하여 docx 내부의 텍스트를 검색 할 수 있습니다.
npm install -g docx2txt docx2txt input.docx # This will print the text to stdout
-
==============================
7.docx 파일은 본질적으로 xml이 들어있는 zip 파일입니다. xml에는 서식이 포함되어 있지만 텍스트도 포함됩니다.
docx 파일은 본질적으로 xml이 들어있는 zip 파일입니다. xml에는 서식이 포함되어 있지만 텍스트도 포함됩니다.
-
==============================
8.OLE 자동화가 가장 쉬울 것입니다. 텍스트는 XML에서 다음과 같을 수 있으므로 서식을 고려해야합니다.
OLE 자동화가 가장 쉬울 것입니다. 텍스트는 XML에서 다음과 같을 수 있으므로 서식을 고려해야합니다.
<b>Looking <i>for</i> this <u>phrase</u>
간단한 텍스트 스캔을 사용하여 쉽게 찾을 수있는 방법은 없습니다.
-
==============================
9.MSWord ActiveX 인터페이스를 사용하여 검색 할 텍스트를 추출하거나 검색을 수행 할 수 있어야합니다. 어떻게 파이썬에서 ActiveX에 액세스하는지 모르겠다.
MSWord ActiveX 인터페이스를 사용하여 검색 할 텍스트를 추출하거나 검색을 수행 할 수 있어야합니다. 어떻게 파이썬에서 ActiveX에 액세스하는지 모르겠다.
-
==============================
10.OpenXMLDeveloper.org에서 라이브러리를 사용할 수도 있습니다.
OpenXMLDeveloper.org에서 라이브러리를 사용할 수도 있습니다.
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
'PYTHON' 카테고리의 다른 글
[PYTHON] Pythons timeit으로 성능을 테스트하기 위해 코드 세그먼트를 어떻게 시간을 잴 수 있습니까? (0) | 2018.10.10 |
---|---|
[PYTHON] numpy 배열에서 특정 요소를 제거하는 방법 (0) | 2018.10.10 |
[PYTHON] matplotlib에서 subplots 사이의 간격을 제거하는 방법? (0) | 2018.10.10 |
[PYTHON] 최대 재시도 횟수가 URL 초과했습니다. (0) | 2018.10.10 |
[PYTHON] 파이썬 하위 프로세스 통신 방법을 사용할 때 종료 코드를 얻는 방법은 무엇입니까? (0) | 2018.10.10 |