2017-03-16 31 views
0
from docx import Document 

alphaDic =  ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','!','?','.','~',',','(',')','$','-',':',';',"'",'/'] 
doc = Document('realexample.docx') 
docIndex = 0 


def delete_paragraph(paragraph): 
    p = paragraph._element 
    p.getparent().remove(p) 
    p._p = p._element = None 

while docIndex < len(doc.paragraphs): 
    firstSen = doc.paragraphs[docIndex].text 
    rep_dic = {ord(k):None for k in alphaDic + [x.upper() for x in alphaDic]} 
    translation = (firstSen.translate(rep_dic)) 
    removeExcessSpaces = " ".join(translation.split()) 
    if removeExcessSpaces != '': 
     doc.paragraphs[docIndex].text = removeExcessSpaces 
    else: 
     delete_paragraph(doc.paragraphs[docIndex]) 
     docIndex -=1 # go one step back in the loop because of the deleted index 

docIndex +=1 

그래서 시험 문서는이파이썬 3 - 특정 라인에 빈 단락을 제거하는 방법 - pythondocx

Hello 
你好 

Good afternoon 
朋友们 
Good evening 
晚上好 

처럼 보인다 그리고 난 다음이 결과를 달성하기 위해 노력하고있어.

你好 

朋友们 
晚上好 

지금 코드는 모든 빈 단락과 과도한 공백을 제거하고 처리하므로 여기에 다소 붙어 있습니다. 나는 영어 단어로 인한 줄 바꿈 만 지우고 싶다. 당신은, 영어 단어 "WORD"를 찾아 "\ n을"로를 추가 한 다음 문서에서이 새로운 결과 "WORD \ 없음"을 제거하면, 영어 단어를 찾고 무엇을 할 수 있는지

你好 
朋友们 
晚上好 
+0

if 문에 다른 조건을 추가하여 firstSen이 비어 있는지 확인한 다음 파일에 그대로 쓸 것입니다 –

+0

비어 있으면 단락이 지워집니다 else 문에 있습니다. 루프는 제거하고 싶지 않은 줄 바꿈 (빈 단락)을 포함하여 모든 단락을 처리합니다. –

+0

첫 번째 파일의 빈 줄을 번역 된 파일에 쓰는 또 다른 조건을 작성하는 것이 좋습니다. 그래서 당신은'removeExcessSpaces! = '':'if'removeExcessSpaces! = ''또는 firstSen == '':'로 변경할 수 있습니다. 그런 식으로 빈 줄이 원래 파일 ('firstSen == ''')에서 나온 것인지, 그리고 다른 파일에서와 같이 비어있는 줄이 비어 있는지 (원인이 중요하지 않은 경우) 비어있는 줄을 쓰는지를 말합니다. –

답변

0

. 파이썬에서 문자열을 추가하는 방법은 + 기호입니다. 그냥 "WORD"+ "\ n"

+0

아직 처음부터 \ n을 남기지 않겠습니까? 나는 이해하고있어, 당신은 ....... \ n 워드 + \ n을하고 "워드 \ n"을 제거 할 것을 제안하고 있습니까? –

+0

사실 나는 단지 "word \ n"을 제거 할 것을 제안하고있다. – RZK

+0

오, 내 실수. 문장의 첫 번째 단어는 "\ n 단어"이고 그 이후 단어는 "단어"입니다. 나는 아직도 그 첫 번째 경우의 문제로 더듬 거리고있다. –