事情是这样的,笔者在使用docx库的时候遇到了文字的缩进问题,具体需求是:

  • 正文内容每段首行顶两格,也就是向右缩进两个字符,像这样:

需求看似很简单嘛,于是我就上网查,结果很多是说设置缩进为Cm(0.74),也有的说是直接用数字表示,总之都很花,感觉没讲到点子上(当然可能是我搜索有问题)。于是,我查看了一下字体大小的问题,总算拨云见日。

在平时使用办公软件的时候,我们习惯于使用Tab键缩进,并且软件还有自动缩进的功能。但其实缩进两个字符到底是缩进多大,是需要看你的字体大小的,比如说五号字体缩进2个字符的话就是需要缩进2个五号字体的大小(听君一席话如听一席话),18磅的字体缩进2个字符则是缩进2个18磅字体的大小。在实际编程中,如果要考虑缩进问题的话,一定不能忽略字体大小。而说到字体大小,它有很多种单位,最常见的单位有以下几种:

  • 中文(比如小初、五号)
  • 磅(pt)
  • 毫米/厘米(mm/cm)
  • 像素(px)
  • 英寸(inch)

举个例子,五号字体 = 10.5pt = 3.70mm = 14px = 0.146inch

首先,我们用代码输出一下10.5磅字体(五号)对应的各个单位的大小验证一下

from docx.shared import Pt
from docx import Documentdoc = Document()
p = doc.add_paragraph()
# 将字体设置为10.5磅,即五号字体
p.style.font.size = Pt(10.5)print(p.style.font.size)
print(p.style.font.size.pt)
print(p.style.font.size.inches)
print(p.style.font.size.cm)

结果是:

133350
10.5
0.14583333333333334
0.37041666666666667

也就是说,10.5磅字体相当于0.14583333333333334英寸、0.37041666666666667厘米或133350。

那么,在了解了字体大小问题之后,我们只要知道如何改变缩进以及如何获取字体大小就可以完美实现两个字符的缩进了。同时,在实际编程中,我们往往不需要字体的各种单位的转换,只要能获取到字体大小,然后将其乘二赋值给缩进属性即可。ok,上代码。

from docx.shared import Pt
from docx import Documentdoc = Document()
p = doc.add_paragraph("我是五号字体"*10)
p.style.font.size = Pt(10.5)# 段落对象p的paragraph_format.first_line_indent属性可以设置段落首行的缩进
# 段落对象p的style.font.size获取字体大小,将其乘二就是两个字符的大小
p.paragraph_format.first_line_indent = p.style.font.size * 2
doc.save("缩进测试.docx")

运行之后,你会得到这样的一份文件:

至此,需求解决,下班!

浅谈python-docx的缩进问题——如何缩进两个字符相关推荐

  1. python竞赛_浅谈Python在信息学竞赛中的运用及Python的基本用法

    浅谈Python在信息学竞赛中的运用及Python的基本用法 前言 众所周知,Python是一种非常实用的语言.但是由于其运算时的低效和解释型编译,在信息学竞赛中并不用于完成算法程序.但正如LRJ在& ...

  2. 浅谈Python代码风格规范 PEP8

    浅谈Python PEP8 本文只简要谈及一下,python的编码风格指南-PEP8. PEP8 全称<Python Enhancement Proposal #8>译作:8号Python ...

  3. python中内置的四种数值类型为_浅谈python语言四种数值类型

    Python语言支持四种不同的数值类型,包括int(整数)long(长整数)float(浮点实际值)complex (复数),本文章向码农介绍python 四种数值类型,需要的朋友可以参考一下.希望对 ...

  4. python sys模块作用_浅谈Python中的模块

    模块 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在Python中,一个.py文件就称之为一个模块(Mod ...

  5. python中文字符串编码_浅谈python下含中文字符串正则表达式的编码问题

    前言 Python文件默认的编码格式是ascii ,无法识别汉字,因为ascii码中没有中文. 所以py文件中要写中文字符时,一般在开头加 # -*- coding: utf-8 -*- 或者 #co ...

  6. python老是报参数未定义_浅谈Python程序的错误:变量未定义

    Python程序的错误种类 Python程序的错误分两种.一种是语法错误(syntax error).这种错误是语句的书写不符合Python语言的语法规定.第二种是逻辑错误(logic error). ...

  7. python open找不到文件的原因_浅谈python在提示符下使用open打开文件失败的原因及解决方法...

    题目:在提示符下使用open打开一个文件 刚开始网上看了下打开的方式,结果一直实现不了,报错是没找到这个文件,而且和我输入的文件名不一样. 错误如下: >>>open('d:\456 ...

  8. python类中方法的执行顺序-浅谈Python的方法解析顺序(MRO)

    方法解析顺序, Method Resolution Order 从一段代码开始 考虑下面的情况: class A(object): def foo(self): print('A.foo()') cl ...

  9. python生成器和迭代器作用_浅谈Python中的生成器和迭代器

    迭代器 迭代器协议 对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么返回一个异常来终止本次迭代.(只能往前走,不能往后退!) 迭代器对象 遵循了(实现了)迭代器协议的对象.(对象内 ...

  10. python中 是什么类型_浅谈python中的变量默认是什么类型

    浅谈python中的变量默认是什么类型 1.type(变量名),输出的结果就是变量的类型: 例如 >>> type(6) 2.在Python里面变量在声明时,不需要指定变量的类型,变 ...

最新文章

  1. 06.系统编程-2.线程
  2. 成长 | 《大厂晋升指南》学习总结(下)
  3. 上海电力学院计算机学院怎么样,上海电力学院计算机科学与技术学院在职研究生_上海电力学院在职研究生_在职研究生招生信息网...
  4. Torchtext 教程
  5. 今天终于完成对postfix配置的修改
  6. 关于DX中纹理平移的一个小问题
  7. EasyUI文档学习心得
  8. PIC浅谈--《x86/x64体系探索及编程》试读
  9. 写一个微信和支付宝订单的查询方法:
  10. 通过CentOS开机自启动脚本设置iptables
  11. bzero 和 memset 函数对比
  12. java读取和写入txt_Java读取和写入txt文件
  13. 联想g510升级换什么cpu好_联想G510笔记本完全拆机指南(图解)
  14. 恒生杭州历年软件测试笔试题,【恒生电子软件测试面试】首先做一个笔试题,然...-看准网...
  15. uniapp获取用户数据昵称为“微信用户”(小程序)@杨章隐
  16. 在浏览器输入url回车后发生了什么
  17. restTemplate实现 authorization basic权限认证(带账号密码)
  18. Java上路09-多线程
  19. 【html】前端页面可视化设计工具总结
  20. 专利申请的费用和提交材料

热门文章

  1. Word页面中底端如何画一条横线,再下端写文字?
  2. 一文搞懂数据结构之 递归-八皇后问题
  3. mysql常见练习题45题
  4. kmp算法:next数组。 手算思想易学版
  5. 惠普136w耗材贵吗_说说打印机选购经验 的第十台打印机 HP Laser 136w
  6. R 包 rgl 安装失败, 报错 X11 not found but required, configure aborted 及解决方法
  7. 计算机怎样用PS抠婚纱图,用PS应该怎样抠出透明婚纱照片
  8. 论文的参考文献怎样标注?
  9. 解决egret引擎List虚拟布局不同高度Item对象重用时导致的布局异常问题
  10. Flink的基础概念