python 格式化输出详解(占位符:%、format、f表达式)——下篇 实例篇
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python 格式化输出详解(占位符:%、format、f表达式)——下篇 实例篇,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3862字,纯文字阅读大概需要6分钟。
内容图文
作者自我介绍:大爽歌, b站小UP主,直播编程+红警三,python1对1辅导老师。
上篇: python 格式化输出详解(占位符:%、format、f表达式)—— 理论篇
本文为下篇: python 格式化输出详解(占位符:%、format、f表达式)—— 实例篇
格式化输出内容为markdown表格格式 —— 使用f表达式
markdown表格语法如下
| 表头 | 表头 |
| ---- | ---- |
| 单元格 | 单元格 |
| 单元格 | 单元格 |
其表现效果则为
表头 | 表头 |
---|---|
单元格 | 单元格 |
单元格 | 单元格 |
详情描述:
有表头内容和单元格内容,均为列表,要输出成markdwon语法格式,同时希望输出内容本身能够尽可能对齐。
补充:中文对齐,尝试使用两格位置来对其,如果中文占位不是两格则对不起。
由于每个内容的对齐长度是存放在变量里的,所以这个场景最适合使用f表达式。
代码如下:
# require: python3.6 or above
def count_width(s, align_zh):
s = str(s)
count = 0
for ch in s:
if align_zh and u'\u4e00' <= ch <= u'\u9fff': # 中文占两格
count += 2
else:
count += 1
return count
def print_to_markdwon_table(column, rows, align_zh = False):
widths = []
column_str = ""
separate = "----"
separate_str = ""
# 计算每一列的宽度:最长字段
for ci, cname in enumerate(column):
cw = count_width(cname, align_zh)
for row in rows:
item = row[ci]
if count_width(item, align_zh) > cw:
cw = count_width(item, align_zh)
widths.append(cw)
delete_count = count_width(cname, align_zh) - count_width(cname, False)
column_str += f'|{cname:^{cw-delete_count+2}}'
separate_str += f'|{separate:^{cw+2}}'
column_str += "|"
separate_str += "|"
print(column_str)
print(separate_str)
for ri, row in enumerate(rows):
row_str = ""
for ci, item in enumerate(row):
cw = widths[ci]
delete_count = count_width(item, align_zh) - count_width(item, False)
row_str += f'|{item:^{cw-delete_count+2}}'
row_str += "|"
print(row_str)
举例如下
example 1: 上篇中用到的表格
column = ["`conversion`", "说明" , "示例", "输出"]
rows = [
["`s`", "对结果调用`str()`方法" , '`f"His name is {name!s}."`', """`'His name is St?le.'`"""],
["`r`", "对结果调用`repr()`方法" , '`f"His name is {name!r}."`', """`"His name is 'St?le'."`"""],
["`a`", "对结果调用`ascii()`方法" , '`f"His name is {name!a}."`', """`"His name is 'St\\xe5le'."`"""],
]
print_to_markdwon_table(column, rows)
其输出内容为
| `conversion` | 说明 | 示例 | 输出 |
| ---- | ---- | ---- | ---- |
| `s` | 对结果调用`str()`方法 | `f"His name is {name!s}."` | `'His name is St?le.'` |
| `r` | 对结果调用`repr()`方法 | `f"His name is {name!r}."` | `"His name is 'St?le'."` |
| `a` | 对结果调用`ascii()`方法 | `f"His name is {name!a}."` | `"His name is 'St\xe5le'."` |
展示效果为:
conversion | 说明 | 示例 | 输出 |
---|---|---|---|
s | 对结果调用str() 方法 | f"His name is {name!s}." | 'His name is St?le.' |
r | 对结果调用repr() 方法 | f"His name is {name!r}." | "His name is 'St?le'." |
a | 对结果调用ascii() 方法 | f"His name is {name!a}." | "His name is 'St\xe5le'." |
example 2: 数据库内容展示
column = ["id", "name", "sex", "age"]
rows = [
[0, 'Li Hua', 'male', 20],
[1, 'Big Shuang', 'male', 24],
[2, 'Xiao Hong', 'female', 21],
[3, 'Xiao Hua', 'female', 19],
[4, 'Ellen', 'female', 20],
[5, 'Zhang Sirui', 'female', 22],
[6, 'Alex', 'male', 23],
[7, 'Zhao Wen', 'female', 24],
[8, 'Sun Wu', 'male', 18],
[9, 'Qian Kong', 'male', 22]
]
print_to_markdwon_table(column, rows)
其输出内容为
| id | name | sex | age |
|----| ---- | ---- |---- |
| 0 | Li Hua | male | 20 |
| 1 | Big Shuang | male | 24 |
| 2 | Xiao Hong | female | 21 |
| 3 | Xiao Hua | female | 19 |
| 4 | Ellen | female | 20 |
| 5 | Zhang Sirui | female | 22 |
| 6 | Alex | male | 23 |
| 7 | Zhao Wen | female | 24 |
| 8 | Sun Wu | male | 18 |
| 9 | Qian Kong | male | 22 |
展示效果为:
id | name | sex | age |
---|---|---|---|
0 | Li Hua | male | 20 |
1 | Big Shuang | male | 24 |
2 | Xiao Hong | female | 21 |
3 | Xiao Hua | female | 19 |
4 | Ellen | female | 20 |
5 | Zhang Sirui | female | 22 |
6 | Alex | male | 23 |
7 | Zhao Wen | female | 24 |
8 | Sun Wu | male | 18 |
9 | Qian Kong | male | 22 |
内容总结
以上是互联网集市为您收集整理的python 格式化输出详解(占位符:%、format、f表达式)——下篇 实例篇全部内容,希望文章能够帮你解决python 格式化输出详解(占位符:%、format、f表达式)——下篇 实例篇所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。