2017-03-15 1 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','!','?','.','~',',','(',')','$','-',':',';',"'",'/'] 

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)) 
    removeSpaces = " ".join(translation.split()) 
    removeLineBreaks = removeSpaces.replace('\n','') 
    doc.paragraphs[docIndex].text = removeLineBreaks 

    docIndex +=1 

줄 바꿈을 문서에서 제거하려고 시도했지만 작동하지 않습니다. readlines 메쏘드는 텍스트 파일의 모든 유형을 읽을 수 있기 때문에 나는 아직도Python 3 - 줄/단락을 지우는 방법

Hello 
There 
+0

시도해보십시오 ('\ r \ n', '')? –

답변

1

당신이하고 싶은 것은 빈 단락을 제거하는 것입니다. 번역이 동일한 경우 Scanny

코드에서

, 당신은 확인할 수 있습니다 * :

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

코드 기준 : 도움이 될 다음 함수는, 당신이 원하지 않는 특정 단락을 삭제합니다 그 다음 delete_paragraph 함수를 호출하는 경우 '' 여부, 그리고, 그래서 당신의 코드는 같은 것이다 :

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)) 
    if translation != '': 
     doc.paragraphs[docIndex].text = translation 
    else: 
     delete_paragraph(doc.paragraphs[docIndex]) 
     docIndex -=1 # go one step back in the loop because of the deleted index 

    docIndex +=1 

* 기준 - feature: Paragraph.delete()

0

보다

Hello 


There 

오히려 점점 오전, 당신은 당신이 원하는 라인을 다시 파일을 열고 사용하려는 해달라고 라인을 무시할 수 있습니다 .

"""example""" 

file = open("file name", "w") 
for line in file.readlines(): 
    if (line != ''): 
     file.write(line) 
+1

이 코드 단편은 질문을 해결할 수 있지만 [설명 포함] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)은 게시물의 품질을 향상시키는 데 정말로 도움이됩니다. 앞으로 독자의 질문에 답하고 있으며 코드 제안의 이유를 알지 못할 수도 있습니다. – DimaSan

+0

조언 해 주셔서 감사합니다. 난 내 최선을 다할 것입니다. –

1

패키지에는 텍스트를 추출하는 example program이 함께 제공됩니다.

그렇긴해도 단락을 조작하려고한다는 사실 때문에 문제가 발생한다고 생각합니다. 그러나 단락 사이의 분리는 개행이 일어나는 곳입니다. 따라서 프로그램을 빈 문자열 ('')으로 바꾸더라도 그 끝에 줄 바꿈이 추가됩니다.

예제 프로그램의 접근 방식을 취하고 자신 만의 서식을 지정하거나 "가득 찬"단락 ("Hello"단락) 사이의 허위 "빈 단락"을 삭제해야합니다. , "", "There") -> ("Hello", "There").