30.Python:格式化字符串

作者: TensorFlow开发者 | 来源:发表于2018-07-14 00:27 被阅读10次

前言

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

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

  • 格式化的字符串文字(也即:f字符串)
    提示:这一种是python3.6版中的新功能。如果要使用,请更新到3.6及以后版本哦
    格式化的字符串文字也简称为f字符串,是允许通过在字符串前加上f或者F将表达式写为字符串,在字符串中包含Python表达式的值, 格式形如:f'这里是格式化字符串举例, 变量值为:{变量}'

例如:

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

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

  • str.format()
    str.format()的基本使用如下:
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()函数美化输出。

相关文章

  • 30.Python:格式化字符串

    前言 前面在学习Python编程中的其他知识时,为了方便验证运行结果,我们通常的做法是:打印输出。当时只是顺便拿来...

  • Python基础(18) - 字符串格式化与模板字符串方法

    字符串格式化的各种方法 格式化字符串的方法 使用%格式化 模板字符串 字符串的format方法 fstring 什...

  • 简单的宏定义(不定期补充)

    控制台输出 RGB色值 格式化字符串 格式化字符串 输出点、坐标、Rect 格式化数字

  • python基础知识(3)

    python字符串 python转义字符 python字符串运算符 python字符串格式化 python格式化操...

  • 字符串

    字符串的转义字符 字符串格式化 字符串格式化使用操作符百分号实现 字符串格式化符号 对字符串的下面这两个部分操作:...

  • python语法入门二

    元组 字符串 格式化 序列 元组tuple:不可变 字符串:不可变 格式化 序列

  • python 01常用数据类型

    字符串 字符串常用方法 字符串格式化

  • 时间处理工具类

    将秒数格式化为字符串 /*** 将秒数格式化为字符串** @param secs 秒 secFull 分or分钟*...

  • C语言学习笔记

    C/C++格式化字符串说明 C++的格式化字符串经常用作格式化数字的输出、字符串合并和转换等等很多场合。 1. 格...

  • lab9

    格式化字符串漏洞,不过是有点蛇皮的格式化字符串,学到了不少新姿势 很明显的格式化字符串,但同时也可以发现,我们的输...

网友评论

    本文标题:30.Python:格式化字符串

    本文链接:https://www.haomeiwen.com/subject/twlepftx.html