Python docx中的add_段落()添加换行符

Python docx中的add_段落()添加换行符,python,docx,python-docx,Python,Docx,Python Docx,我使用的代码如下: def header_build(self, boldText, dataText): # document.add_heading('Document Title', 0) p = self.document.add_paragraph() p.style = self.document.styles['Body Text'] p.style.font.size = Pt(12) p.style.font.name = 'Times

我使用的代码如下:

def header_build(self, boldText, dataText):
    # document.add_heading('Document Title', 0)
    p = self.document.add_paragraph()
    p.style = self.document.styles['Body Text']
    p.style.font.size = Pt(12)
    p.style.font.name = 'Times New Roman'
    p.add_run(boldText).bold = True
    p.add_run(dataText)
当我使用header_build函数时,我的想法是有以下几点:

header_build(self, boldText='Owner: ', dataText='Name')
获取以下信息:

所有者:姓名


问题是我在尝试获取文本之前获得了一行新词。

问题:

我认为这是因为您正在向手动创建的现有文档(即空文档)添加内容(不使用pythondocx)。似乎在您创建文档时,会创建
段落[0]
,因此当您使用
add\u paragration()
添加新段落时,它会创建另一个段落
段落[1]
而第一段为空

解决方案:

有两种解决方案:

或者将文本插入段落[0],而不是创建新段落:

def header_build(self, boldText, dataText):

    # paragraph[0]
    p= self.document.paragraphs[0]

    p.style = document.styles['Body Text']
    p.style.font.size = Pt(12)
    p.style.font.name = 'Times New Roman'
    p.add_run(boldText).bold = True
    p.add_run(dataText)
    print p.text

您可以使用python docx创建一个新文档,然后使用
添加段落()
,它将成为
段落[0]
(不更改页眉构建函数):


Mimx是非常正确的。使用
document()
创建的新文档包含一个空段落

这种行为是由语言决定的。打开新Word文件时,如果启用了段落标记(可见),则会看到插入点正好位于单个段落标记之前。这反映在Word的ISO/IEC 29500规范中,文件(w:正文元素)必须包含1个或多个段落才能有效。不幸的是,这意味着您需要以不同于稍后添加的方式处理新文档的第一段

如果需要,可以在开始添加以下内容之前删除第一段:

from docx import Document

document = Document()
document._body.clear_content()
如果在此调用后保存而不添加任何内容,.docx文件将无效,可能无法加载或需要“修复”步骤。但只要您添加内容,这将很好地工作,并且具有添加段落是统一的优势,即添加第一段的方式与添加后面的段落的方式相同

否则,您需要获取第一段,并将其与其他段落分开操作:

paragraph = document.paragraphs[0]
paragraph.text = 'foobar'
paragraph.style = 'Heading 1'
etc.

for text in content_blocks:
    paragraph = document.add_paragraph()
    paragraph.text = text
    paragraph.style = 'Body Text'
这对我有用:)

O/p:


Lorem ipsumdolorsit amet.

您可以澄清一下您从哪里获得额外的线路吗?您的意思是在文档中吗?是的,它会导致在所有者:名称行之前有额外的空行(新行)
paragraph = document.paragraphs[0]
paragraph.text = 'foobar'
paragraph.style = 'Heading 1'
etc.

for text in content_blocks:
    paragraph = document.add_paragraph()
    paragraph.text = text
    paragraph.style = 'Body Text'
import docx

doc = docx.Document()
paragraph = doc.add_paragraph('Lorem ipsum ')
run = paragraph.add_run('dolor')
run.bold = True
paragraph.add_run(' sit amet.')
doc.save('test.docx')