格式化输出
有四种格式化输出方式。
格式化字符串字面量
格式化字符串字面量(formatted string literals)open in new window,也简称 f-strings,通过在字符串前面加一个 F
或者 f
,可以允许我们在字符串使用表达式({expression}
)。
>>> import math
>>> print(f'The value of pi is approximately {math.pi:.3f}.')
The value of pi is approximately 3.142.
2
3
冒号后面是一个格式化表达式,在Format Specification Mini-Languageopen in new window可以查看详细信息。
str.format()
str.format()
的基本用法如下:
>>> print('We are the {} who say "{}!"'.format('knights', 'Ni'))
We are the knights who say "Ni!"
2
我们可以给每一个表达式设置一个索引或者名称。
>>> print('{0} and {1}'.format('spam', 'eggs'))
spam and eggs
>>> print('{1} and {0}'.format('spam', 'eggs'))
eggs and spam
>>> print('This {food} is {adjective}.'.format(
... food='spam', adjective='absolutely horrible'))
This spam is absolutely horrible.
2
3
4
5
6
7
手动格式化
通过 str.rjust()
、str.ljust()
、str.center()
和 srt.zfill()
等方法来格式化。这几个函数的功能分别是右对齐、左对齐、居中对齐和左补零填充。
>>> for x in range(1, 11):
... print(repr(x).rjust(2), repr(x*x).rjust(3), end=' ')
... # Note use of 'end' on previous line
... print(repr(x*x*x).rjust(4))
...
1 1 1
2 4 8
3 9 27
4 16 64
5 25 125
6 36 216
7 49 343
8 64 512
9 81 729
10 100 1000
2
3
4
5
6
7
8
9
10
11
12
13
14
15
老式的字符串格式化
通过 'string' % values
的形式来实现字符串格式化,string
中的所有 %
都会被 values
中的相应元素替换。
>>> import math
>>> print('The value of pi is approximately %5.3f.' % math.pi)
The value of pi is approximately 3.142.
2
3
更多格式化信息可以在 printf-style String Formatting open in new window 查看
读写文件
open()
函数open in new window返回一个文件对象,我们可以对这个文件对象进行一些操作。open()
函数支持指定读写模式,r
为只读模式,w
为只写模式,a
为追加模式,r+
为读写模式。
通常来说,文件被以文本文件模式打开,我们可以通过参数来改变文件模式,比如 b
参数可以指定以二进制模式打开。
在文本模式中,读取的文本行,换行符都是 \n
,Python 内部根据不同平台做了差异化处理。即读取的时候会将不同平台的换行符转换成 \n
,写入的时候会将 \n
转换成不同平台的换行符。
操作文件对象
通过 open()
函数拿到文件对象以后,我们可以通过 f.read(size)
方法读取一段文本,未指定 size
则读取全部内容(当心读取大文件问题)。在到文件末尾时,f.read()
会返回空字符串(''
)。
>>> f.read()
'This is the entire file.\n'
>>> f.read()
''
2
3
4
f.readline()
会逐行读取文本,每一行末尾都是一个换行符(\n
)。读到文件末尾则返回空字符串。
>>> f.readline()
'This is the first line of the file.\n'
>>> f.readline()
'Second line of the file\n'
>>> f.readline()
''
2
3
4
5
6
我们可以通过 list(f)
或者 f.readlines()
读取文件内所有的行。
f.write(string)
可以写入文件,返回写入的文本长度。
>>> f.write('This is a test\n')
15
2
f.tell()
返回当前读取的位置。我们可以通过 f.seek(offset, whence)
来改变读取位置。当 whence
为 0 时,从文件开始计算偏移量;当 whence
为 1 时,从当前读取位置计算偏移量;当 whence
为 2 时,从文件末尾开始计算偏移量。
使用 json 保存结构化数据
我们可以通过 json
open in new window 这个模块。
>>> import json
>>> x = [1, 'simple', 'list']
>>> json.dumps(x)
'[1, "simple", "list"]'
2
3
4
如果已经拿到文件对象,则可以直接通过 dump
和 load
函数来实现写入和读取文件内容。
json.dump(x, f)
x = json.load(f)
2
关注微信公众号,获取最新推送~
加微信,深入交流~