Python 3 - 如何删除行/段落

时间:2017-03-15 02:26:44

标签: python python-3.x python-docx

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

我正在尝试从文档中删除换行符,但它不起作用。 我还在接受

Hello


There

而不是

Hello
There

3 个答案:

答案 0 :(得分:1)

该软件包附带一个example program,用于提取文本。

那就是说,我认为你的问题源于你试图操作段落的事实。但段落之间的分离是新线的发生地。因此,即使用空字符串('')替换程序,仍会在其末尾添加换行符。

你应该采用示例程序的方法,并进行自己的格式化,或者你应该确保删除任何虚假的#34;空的&#34;可能介于&#34; full&#34;之间的段落你拥有的(&#34;你好&#34;,&#34;&#34;,&#34;那里&#34;) - &gt; (&#34;你好&#34;,&#34;那里&#34;)。

答案 1 :(得分:1)

我认为你想要做的就是摆脱一个空段落。以下功能可以提供帮助,它会删除您不想要的某个段落:

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

代码:Scanny *

在您的代码中,您可以检查翻译是否等于'',如果是,则调用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()

答案 2 :(得分:0)

由于readlines可以读取任何类型的文本文件,您可以打开文件重写所需的行,并忽略您不想使用的行。

"""example"""

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