gpt4 book ai didi

python - 如何通过 python-docx 将列表项目符号中的某些单词加粗

转载 作者:行者123 更新时间:2023-12-01 07:38:16 24 4
gpt4 key购买 nike

现在我有一个名为 k = ['aaa bbb', 'ccc ddd', 'eee fff'] 的列表。我想通过 listbullet 将列表 k 写入 word 文件,并且我希望 aaa bbb (k[0]) 为粗体字文件。 k中其余元素正常。

换句话说,我希望它显示为 this然而,无论我如何尝试,结果都显示没有元素是粗体的。

另外,是否可以只将aaa设为粗体。就像 this

我尝试过“粗体”、“字体”、“样式”等功能。但它们不起作用。


document = Document()

k = ['aaa bbb', 'ccc ddd', 'eee fff']

for i in range(len(k)):

if i ==1:
run = document.add_paragraph(k[i], style = "List Bullet")
run.bold = True

else:
run = document.add_paragraph(k[i], style = "List Bullet")

结果不是我想象的那样。运行后,没有粗体字符。

最佳答案

问题在于 add_paragraph 返回 Paragraph 引用,而不是 Run。

不过,我发现创建一个空的项目符号列表然后 add_run(string) 更方便,每次都设置 bold = True

如果我们还更改解析行的逻辑(使用 enumerate 将当前行的索引也获取到 k 列表中),我们可以设置两个 bool 变量,make_only_first_word_boldmake_only_first_line_bold

对于第一个,我们指定只有一行的第一个单词必须加粗,而对于第二个,我们指定是否只有列表的第一行必须加粗。

这导致我们有四种不同的组合:没有粗体、全部粗体、所有第一个单词都粗体、只有第一行的第一个单词粗体。

from docx import Document

document = Document()
k = ['aaa bbb', 'ccc ddd', 'eee fff']

make_only_first_word_bold = True
make_only_first_line_bold = True

for idx, line in enumerate(k):
if make_only_first_word_bold:
words = line.split(maxsplit=1) # ['aaa', 'bbb even_more_things']
word_to_bold = words[0] + ' '
leftover = words[1]
else:
word_to_bold = line
leftover = None

if make_only_first_line_bold and idx > 0:
word_to_bold = None
leftover = line

paragraph = document.add_paragraph(style='List Bullet')
if word_to_bold:
paragraph.add_run(word_to_bold).bold = True
if leftover:
paragraph.add_run(leftover)

document.save('test.docx')

关于python - 如何通过 python-docx 将列表项目符号中的某些单词加粗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56863706/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com