多语言展示
当前在线:1562今日阅读:155今日分享:35

Python | 格式化输出字符串

一直以来,字符串的格式化输出对于编程来说,尤其是新手,还是挺麻烦的。对于这部分的内容,笔者的建议是,只要大致能满足输出要求,越简单越好,别整那复杂的~(图文无关[俏皮])
工具/原料

Python 2.7.11

问题
1

今天写这个经验的缘由是看到下面这个字符串输出的提问问:排版最后怎么是歪的呢!麻烦大神们看看为什么!

3

下面是具体代码:(文末会解答这个问题)END

背景知识
1

在Python我们有很方便的格式化字符串函数format。应该说自从用了format函数以后,传统的字符格式化笔者已经不会再用了^_^。下图是占位符用法

2

下面是简单的格式化用法。应该说掌握这两部分内容已经可以处理大部分的字符串格式化问题了。更多的format函数的用法大家可以参考文末链接。END

测试
1

我们先来看一下下面这部分代码。看起来这是一份无懈可击的代码了,所有的打印输出都是用相同的format函数,并且每行字符的长度(还是个数?)都是相同的20

2

然而,通过运行代码,观察结果,我们发现,现实跟预想有差距。我们发现,所有含中文的格式化字符串的输出在“长度”上都比英文字符要短。所以我们有理由推测,format函数里面的20表示的是字节数。因为,一个汉字是两个字节的

3

所以按照上面的推测,我们重新调整了包含汉字的输出代码:对11行代码因为有3个汉字,把需要的字节数增加到23对12行代码因为有2个汉字,把需要的字节数增加到22测试的结果,可以说,是完美的:)

解决步骤
1

现在我们回到原来的问题。我们看到,问题中的格式问题其实就是我们在上面的测试中发现的因中文引起的问题。

2

考虑到代码中使用了两种格式化字符串技术,为了方便起见(简单~),我们先调整一下代码,把代码转换为使用format函数的写法

3

好,现在我们按照测试的时候的方法,对于包含中文的字符串,增加打印的字节数。表头表尾也不能忍,也一并改了。效果棒棒哒~

4

我们再一次review代码,发现第三个的占位符里面有多余的代码,于是删除了。发现删除后内容部分最后一行的对齐方式发生了变化,还是汉字字数的问题,再调整!

5

好,现在我们的问题在这里是解决了,完全的!

One More Thing
1

其实对于这个问题是有一种很简单纯粹也很暴力的方法了,推荐大家多多使用~我们来看新的代码

2

有两个问题大家要注意。content这个变量是直接把打印内容用三个引号括起来的,这样里面的内容就有了一个新名字“文本字符串”,而它里面的格式是真正所见即所得的,大家手动对齐就好了。打印出来就是这个效果。

3

对于另一个问题,是关于print函数的。我们知道print函数默认是会换行的,所以如果换另外一种更直观的写法,我们需要在print函数后面加逗号。完。END

注意事项

format官方介绍:https://docs.python.org/2/library/string.html#formatspec

推荐信息