Python开发(人工智能/大数据/机器学习)

30.Python:格式化字符串

2018-07-14  本文已影响10人  TensorFlow开发者

前言

前面在学习Python编程中的其他知识时,为了方便验证运行结果,我们通常的做法是:打印输出。当时只是顺便拿来用,并没有系统完整地学习。今天我们来完整、系统地学习Python中的格式化字符串和文件读写。

格式化字符串(2种方式)

例如:

import math
print(f'The value of pi is approximately {math.pi:.3f}.')

注意:在冒号:之后传递一个整数将导致该字段为最小字符数。这对于排列很有用。

print('{}年第{}届世界杯在{}盛大举行。'.format(2018, 21, '俄罗斯'))

运行结果:2018年第21届世界杯在俄罗斯盛大举行。
括号{}及其里面的字符 (称作格式化字段) 将会被 format() 中的参数替换。

在括号{}中的数字用于指向传入对象在format()中哪个位置的数据,如下所示:

print('周末,{0}约了{1}。'.format('李雷', '韩梅梅'))
print('周末,{1}约了{0}。'.format('李雷', '韩梅梅'))

运行结果:

周末,李雷约了韩梅梅。
周末,韩梅梅约了李雷。

要注意不要索引值不要越界,否则会报错:

print('周末,{2}约了{0}。'.format('李雷', '韩梅梅'))

运行结果:

File "F:/python_projects/io_file/print_repr.py", line 7, in <module>
    print('周末,{2}约了{0}。'.format('李雷', '韩梅梅'))
IndexError: tuple index out of range

如果在 format()中使用了关键字参数, 那么它们的值会指向使用该名字的参数。例如:

print('{name}的官方网址是{website}'.format(name="Python", website="www.python.org"))

运行结果:

Python的官方网址是www.python.org

旧式字符串格式化

如果需要格式化单个参数,则可以是单个非元组对象。 否则,值必须是具有格式字符串指定的项目数的元组,或者是单个映射对象(例如,字典)。

# 需要格式化一个参数,可以按照下面两种格式:
print('pi的值约为:%.2f' % math.pi)
print('pi的值约为:%.6f' % (math.pi, ))

# 需要格式化多个参数,必须使用元组或字典
print('%d年第%d届世界杯在%s盛大举行。' % (2018, 21, '俄罗斯'))
print('%(year)d年第%(no.)d届世界杯在%(place)s盛大举行。' % {'year':2018, 'no.':21, 'place':'俄罗斯'})

运行结果:

pi的值约为:3.14
pi的值约为:3.141593
2018年第21届世界杯在俄罗斯盛大举行。
2018年第21届世界杯在俄罗斯盛大举行。

repr()函数

返回包含对象的可打印表示的字符串。对于许多类型,此函数尝试返回一个字符串,该字符串在传递时会产生具有相同值的对象eval(),否则表示形式是一个括在尖括号中的字符串,其中包含对象类型的名称以及其他信息通常包括对象的名称和地址。类可以自定义 repr() ,具体是通过重写类中的__repr__ ()方法来控制此函数为其实例返回的内容,需要输出什么格式,就在__repr__ ()中返回什么格式的字符串即可。

class Dog(object):
    name = '未取名'
    color ='白色'

    def eat(self):
        print("小狗在啃骨头")

d = Dog()
d.name = "阿黄"
d.color = '黄色'

print(d)

s = repr(d)
print(s)

运行结果:

<__main__.Dog object at 0x000002071CAE81D0>
<__main__.Dog object at 0x000002071CAE81D0>

在类种重写__repr__ (),如下:

class Dog(object):
    name = '未取名'
    color ='白色'

    def eat(self):
        print("小狗在啃骨头")

    # 重新定义__repr__
    def __repr__(self):
        return "狗名为:" + self.name + ",毛色为:" + self.color

d = Dog()
d.name = "阿黄"
d.color = '黄色'

print(d)

s = repr(d)
print(s)

运行结果:

狗名为:阿黄,毛色为:黄色
狗名为:阿黄,毛色为:黄色

小结

本文重点学习了字符串的格式化:f字符串和s.format(),以及通过重新定义repr()函数美化输出。

上一篇下一篇

猜你喜欢

热点阅读