2017-03-16 5 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 

だから、テストドキュメントはこのPythonの3 - は、特定の行に空の段落を削除する方法 - pythondocx

Hello 
你好 

Good afternoon 
朋友们 
Good evening 
晚上好 

のように見え、私は以下のこの結果を達成しようとしています。

你好 

朋友们 
晚上好 

現在、コードはすべての空の段落と余分なスペースを削除していますので、私はここでちょっと固まっています。私は、英語の単語から生まれた改行を消去したいだけです。あなたは、英語の単語「WORD」を見つける「\ nを」と、それを追加し、文書からこの新しい結果「WORDを\ n」を削除したら、英語の単語を探して何ができるか

你好 
朋友们 
晚上好 
+0

if文に別の条件を追加してfirstSenが空であることを確認した後、そのままファイルに書き出します –

+0

空であれば、段落を消去しますelseステートメントにあります。ループは、私が取り除きたくない改行(空の段落)を含むすべての段落に行きます。 –

+0

最初のファイルから空の行を翻訳ファイルに書き込む別の条件を記述することをお勧めします。したがって、もしあなたが 'removeExcessSpaces!= '':'を 'ifExcessExcessSpaces!= ''またはfirstSen == '':'に変更することができます。このようにして、空の行が最初にファイル( 'firstSen == ''')から出ていれば、それを書きます(またはその翻訳は、両方とも空であっても問題ありません)。 –

答えて

0

。 Pythonで文字列を追加する方法は+記号で行います。単に "WORD" + "\ n"を実行します

+0

それはまだ最初から\ nを残していませんか? 私は理解しているから、あなたは....... \ nワード+ \ nを実行してから "ワード\ n"を削除するように提案していますか? –

+0

実際には私はちょうど "単語\ n"を削除することを提案しています – RZK

+0

ああ、私の間違い。文中の最初の単語は "\ nワード"で、その後の単語は "単語"だけです。私はまだ最初のケースの問題に悩まされています。 –

関連する問題