添加分页符后如何删除不需要的额外空行?
How do I remove unwanted additional empty lines after adding page break?
我正在尝试使用 python docx 模块重新格式化 this .docx 文档。每个问题都以特定的表达方式“-- ans end --”结尾。我想在表达式后插入一个分页符,代码如下:
import docx, re
from pathlib import Path
from docx.enum.text import WD_BREAK
filename = Path("DOCUMENT_NAME")
doc = docx.Document(filename)
for para in doc.paragraphs:
match = re.search(r"-- ans end --", para.text)
if match:
run = para.add_run()
run.add_break(WD_BREAK.PAGE)
每个分页符后似乎有 2
我试图删除的是:
para.text = para.text.strip("\n")
在添加分页符之前剥离空行没有任何作用,而在添加分页符之后剥离空行会删除分页符。
请告诉我如何消除或避免添加 2 个空行。谢谢。
更新:
分页符应添加到下一个 paragraph/section 的开头而不是 -- ans end --
之后(本节的结尾),因为分页符在添加到段落末尾时会创建一个新行(在 Word 上试试)。因此我使用了这个:
run = para.runs[0]
run._element.addprevious(new_run_element)
new_run = Run(new_run_element, run._parent)
new_run.text = ""
new_run.add_break(WD_BREAK.PAGE)
改为在下一段的开头添加分页符,这不会创建新行。
你有没有看过修改前后的文档内容?例如
for para in doc.paragraphs:
print(repr(para.text)) # the call to repr() makes your `\n`s show up
这有助于弄清楚发生了什么。
在更改文档之前,没有 \n
s 和 --- ans end --
s,因此在添加分页符之前删除空行没有任何作用是有道理的。此外,在剥离您的文档之前,-- ans end --
:
之后的段落中有一个空字符串
'-- ans --'
'-- ans end --'
''
是编辑文档之前的样子。 (除了有一种情况 -- ans end --
后面跟着 两个 ,这与其他所有情况都非常不同。)
编辑文档后,这些部分如下所示。
'-- ans end --\n'
''
当我 运行 这段代码时,正如我在上面的评论中提到的,分页符实际上出现在错误的位置 - 就在 --ans end --
之后而不是之前。我认为这可以通过一种相当直接的方式解决,如果您也遇到了这个问题,我会把它留给您。
如果您删除那些 '' 段落,我认为这可以解决您的问题。从文档中删除一段很烦人,但请参阅 this GitHub answer 了解执行此操作的咒语。
我正在尝试使用 python docx 模块重新格式化 this .docx 文档。每个问题都以特定的表达方式“-- ans end --”结尾。我想在表达式后插入一个分页符,代码如下:
import docx, re
from pathlib import Path
from docx.enum.text import WD_BREAK
filename = Path("DOCUMENT_NAME")
doc = docx.Document(filename)
for para in doc.paragraphs:
match = re.search(r"-- ans end --", para.text)
if match:
run = para.add_run()
run.add_break(WD_BREAK.PAGE)
每个分页符后似乎有 2
我试图删除的是:
para.text = para.text.strip("\n")
在添加分页符之前剥离空行没有任何作用,而在添加分页符之后剥离空行会删除分页符。
请告诉我如何消除或避免添加 2 个空行。谢谢。
更新:
分页符应添加到下一个 paragraph/section 的开头而不是 -- ans end --
之后(本节的结尾),因为分页符在添加到段落末尾时会创建一个新行(在 Word 上试试)。因此我使用了这个:
run = para.runs[0]
run._element.addprevious(new_run_element)
new_run = Run(new_run_element, run._parent)
new_run.text = ""
new_run.add_break(WD_BREAK.PAGE)
改为在下一段的开头添加分页符,这不会创建新行。
你有没有看过修改前后的文档内容?例如
for para in doc.paragraphs:
print(repr(para.text)) # the call to repr() makes your `\n`s show up
这有助于弄清楚发生了什么。
在更改文档之前,没有 \n
s 和 --- ans end --
s,因此在添加分页符之前删除空行没有任何作用是有道理的。此外,在剥离您的文档之前,-- ans end --
:
'-- ans --'
'-- ans end --'
''
是编辑文档之前的样子。 (除了有一种情况 -- ans end --
后面跟着 两个 ,这与其他所有情况都非常不同。)
编辑文档后,这些部分如下所示。
'-- ans end --\n'
''
当我 运行 这段代码时,正如我在上面的评论中提到的,分页符实际上出现在错误的位置 - 就在 --ans end --
之后而不是之前。我认为这可以通过一种相当直接的方式解决,如果您也遇到了这个问题,我会把它留给您。
如果您删除那些 '' 段落,我认为这可以解决您的问题。从文档中删除一段很烦人,但请参阅 this GitHub answer 了解执行此操作的咒语。