python操作word报错ValueError: can only parse strings

1、问题描述:

学习Python操作word文件,使用render()方法时报错ValueError: can only parse strings。

2、相关代码

# _*_ encoding:utf-8 _*_
from docxtpl import DocxTemplate
data_dic = {
't1':'燕子',
't2':'杨柳',
't3':'桃花',
't4':'针尖',
't5':'头涔涔',
't6':'泪潸潸',
't7':'茫茫然',
't8':'伶伶俐俐',
}

doc = DocxTemplate("/test/test.doc") #加载模板文件
doc.render(data_dic) #填充数据
doc.save("/test/target.doc")

3、/test/test.doc模板信息:

{{r t1}}去了,有再来的时候;{{r t2}}枯了,有再青的时候;{{r t3}}谢了,有再开的时候。但是,聪明的,你告诉我,我们的日子为什么一去不复返呢?——是有人偷了他们罢:那是谁?又藏在何处呢?是他们自己逃走了罢:现在又到了哪里呢?
我不知道他们给了我多少日子;但我的手确乎是渐渐空虚了。在默默里算着,八千多日子已经从我手中溜去;像{{r t4}}上一滴水滴在大海里,我的日子滴在时间的流里,没有声音,也没有影子。我不禁{{r t5}}而{{r t6}}了。
去的尽管去了,来的尽管来着;去来的中间,又怎样地匆匆呢?早上我起来的时候,小屋里射进两三方斜斜的太阳。太阳他有脚啊,轻轻悄悄地挪移了;我也{{r t7}}跟着旋转。于是——洗手的时候,日子从水盆里过去;吃饭的时候,日子从饭碗里过去;默默时,便从凝然的双眼前过去。我觉察他去的匆匆了,伸出手遮挽时,他又从遮挽着的手边过去,天黑时,我躺在床上,他便{{r t8}}地从我身上跨过,从我脚边飞去了。等我睁开眼和太阳再见,这算又溜走了一日。我掩着面叹息。但是新来的日子的影儿又开始在叹息里闪过了。

4、报错信息:

5、相关依赖包版本

doc                0.1.0
docx               0.2.4
docxtpl            0.6.3
lxml               3.2.1
Jinja2             2.10.3

6、我尝试更换了lxml的版本发现报错信息一样。我又尝试跟踪错误,在这个文件里:

(1)跟踪的文件:

(2)打印了一下text:

(3)发现有一步text为None:


7、暂时解决:

经过了一天的学习、处理和测试,问题暂时得到了解决,我在get_headers_footers_xml这个函数里添加了不为空的判断if val._target._blob != None:yield relKey, self.xml_to_string(parse_xml(val._target._blob))  就不再报错并且成功写入到目标文件里,但是我仍然不清楚这是不是依赖包本身的BUG。如果有大佬知道的话请指点我一下。如果也有遇到这个问题的朋友,可以试一试我这个方法暂时解决一下。下面是我修改的图片:

8、最终解决:

经过网友的指点以及自己的思考,终于定位到真正问题所在,原来是我用的模板出现了问题,因为模板之前就是可用的,所以没有想过模板的问题便直接修改了模板的正文内容,经过检查发现是模板的页脚不适合,删除了页脚之后问题得到了解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值