2014-07-20 2 views
0

단어를 검색하고 표로 바꾸고 싶습니다. 다음 코드는 문자열입니다 : 테이블로 교체하는 방법은검색 문자열 및 python-docx 라이브러리를 사용하여 바꿉니다.

def paragraph_replace(self, search, replace): 
    searchre = re.compile(search) 
    for paragraph in self.paragraphs: 
     paragraph_text = paragraph.text 
     if paragraph_text: 
      if searchre.search(paragraph_text): 
       paragraph.text = re.sub(search, replace, paragraph_text) 
    return paragraph_text 

가?

+0

여기서'self.paragraphs'를 정의합니까? – Trimax

+0

바로 위 .. 실제로 자기가 Document @ Trimax –

답변

1

단락과 같은 테이블은 블록 수준의 컨텐트 항목이며이 둘은 피어로만 나타날 수 있습니다. 그래서 당신은 단락 안에 테이블을 삽입 할 수 없습니다. 두 단락 사이에 (또는 처음이나 끝 부분에) 테이블을 "사이에"놓을 수 있습니다. 우리가이 기능을 얻을 수있을 때까지 당신을 위해 트릭을 할 수있는이 같은

뭔가 라이브러리에 추가 :

table = document.add_table(...) 
p = paragraph_to_insert_before._p 
p.addprevious(table._tbl) 

._p._tbl 특성이 각각 ParagraphTable 객체의 기초가되는 lxml 요소입니다. addprevious() 메서드는 lxml 메서드이며이 경우 <w:tbl> 요소를 단락의 앞쪽 피어로 이동합니다. 단락 뒤에 원하는 경우 addnext()을 사용할 수 있습니다.

다소 더러운 해킹이지만 라이브러리에 기능을 추가 할 때까지는 충분히 알려줄 것입니다. 그것이 당신을 위해 일하는 경우 알려주십시오 :)

+0

내 통제하에 있습니다. 일반 테이블 (table = document.add_table (rows = 1, cols = 3, style = 'LightList'))을 추가하면 문서 끝으로 이동합니다. 내가 필요한 것은이 테이블을 문서 중간에 삽입하는 것입니다 (두 단락 사이에서 말한 것처럼). 그것은 가능한가? @scanny –

+1

이 작업을 수행 할 수있는 더러운 해킹이 추가되었습니다. :) – scanny

+0

yeap이 진짜 helful이었습니다. 고맙습니다. :) –