字符串格式化

  Python的字符串格式化有两种方式: 百分号方式、format方式

  百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存。

1、百分号方式

%[(name)][flags][width].[precision]typecode

  • (name)      【可选】,用于选择指定的key

  • flags         【可选】,可供选择的值有:width 可选,占有宽度

    • +     右对齐;正数前加正好,负数前加负号;

    • -      左对齐;正数前无符号,负数前加负号;

    • 空格  右对齐;正数前加空格,负数前加负号;

    • 0      右对齐;正数前无符号,负数前加负号;用0填充空白处

  • .precision 【可选】,小数点后保留的位数

  • typecode  【必选】

    • s,获取传入对象的__str__方法的返回值,并将其格式化到指定位置

    • r,获取传入对象的__repr__方法的返回值,并将其格式化到指定位置

    • c,整数:将数字转换成其unicode对应的值,10进制范围为 0 <= i <= 1114111(py27则只支持0-255);字符:将字符添加到指定位置

    • o,将整数转换成 八 进制表示,并将其格式化到指定位置

    • x,将整数转换成十六进制表示,并将其格式化到指定位置

    • d,将整数、浮点数转换成 十 进制表示,并将其格式化到指定位置

    • e,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(小写e)

    • E,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(大写E)

    • f, 将整数、浮点数转换成浮点数表示,并将其格式化到指定位置(默认保留小数点后6位)

    • F,同上

    • g,自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是e;)

    • G,自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是E;)

    • %,当字符串中存在格式化标志时,需要用 %%表示一个百分号

注:Python中百分号格式化是不存在自动将整数转换成二进制表示的方式

常用格式化:

tpl = "i am %s" % "alex"tpl = "i am %s age %d" % ("alex", 18)tpl = "i am %(name)s age %(age)d" % {"name": "alex", "age": 18}tpl = "percent %.2f" % 99.97623tpl = "i am %(pp).2f" % {"pp": 123.425556, }tpl = "i am %.2f %%" % {"pp": 123.425556, }

2、Format方式

[[fill]align][sign][#][0][width][,][.precision][type]

  • fill   【可选】空白处填充的字符

  • align 【可选】对齐方式(需配合width使用)

    • <, 内容左对齐

    • >, 内容右对齐(默认)

    • =, 内容右对齐,将符号放置在填充字符的左侧,且只对数字类型有效。 即使:符号+填充物+数字

    • ^, 内容居中

  • sign 【可选】有无符号数字

    • +      正号加正,负号加负;

    • -       正号不变,负号加负;

    • 空格  正号空格,负号加负;

  • #         【可选】对于二进制、八进制、十六进制,如果加上#,会显示 0b/0o/0x,否则不显示
  • ,            【可选】为数字添加分隔符,如:1,000,000

  • width       【可选】格式化位所占宽度

  • .precision 【可选】小数位保留精度

  • type         【可选】格式化类型

    • 传入” 字符串类型 “的参数

      • s,格式化字符串类型数据

      • 空白,未指定类型,则默认是None,同s

    • 传入“ 整数类型 ”的参数
      • b,将10进制整数自动转换成2进制表示然后格式化

      • c,将10进制整数自动转换为其对应的unicode字符

      • d,十进制整数

      • o,将10进制整数自动转换成8进制表示然后格式化;

      • x,将10进制整数自动转换成16进制表示然后格式化(小写x)

      • X,将10进制整数自动转换成16进制表示然后格式化(大写X)

    • 传入“ 浮点型或小数类型 ”的参数
      • e, 转换为科学计数法(小写e)表示,然后格式化;

      • E, 转换为科学计数法(大写E)表示,然后格式化;

      • f , 转换为浮点型(默认小数点后保留6位)表示,然后格式化;

      • F, 转换为浮点型(默认小数点后保留6位)表示,然后格式化;

      • g, 自动在e和f中切换

      • G, 自动在E和F中切换

      • %,显示百分比(默认显示小数点后6位)

常用格式化:

tpl = "i am {}, age {}, {}".format("seven", 18, 'alex')tpl = "i am {}, age {}, {}".format(*["seven", 18, 'alex'])tpl = "i am {0}, age {1}, really {0}".format("seven", 18)tpl = "i am {0}, age {1}, really {0}".format(*["seven", 18])tpl = "i am {name}, age {age}, really {name}".format(name="seven", age=18)tpl = "i am {name}, age {age}, really {name}".format(**{"name": "seven", "age": 18})tpl = "i am {0[0]}, age {0[1]}, really {0[2]}".format([1, 2, 3], [11, 22, 33])tpl = "i am {:s}, age {:d}, money {:f}".format("seven", 18, 88888.1)tpl = "i am {:s}, age {:d}".format(*["seven", 18])tpl = "i am {name:s}, age {age:d}".format(name="seven", age=18)tpl = "i am {name:s}, age {age:d}".format(**{"name": "seven", "age": 18})tpl = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%}".format(15, 15, 15, 15, 15, 15.87623, 2)tpl = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%}".format(15, 15, 15, 15, 15, 15.87623, 2)tpl = "numbers: {0:b},{0:o},{0:d},{0:x},{0:X}, {0:%}".format(15)tpl = "numbers: {num:b},{num:o},{num:d},{num:x},{num:X}, {num:%}".format(num=15)

知识补充

1.__doc__  

相对于单行注释,多行注释而言,这是对.py文件注释的一种方法 !

  在文件开头处 用3个引号 括住内容

#!/usr/bin/env python
# -*-coding:utf-8 -*-"""我是注释.........
"""print(__doc__)#   我是注释.........

2.__file__

  获取当前文件路径

print(__file__)# F:/PycharmProjects/Python/W4/Day12/lib/index.py******************************p1 = os.path.dirname(__file__)
p2 = 'lib'
my_dir = os.path.join(p1,p2)
sys.path.append(my_dir)

3.__package__

  当前文件返回: None

  导入的其他文件: 指定文件所在包 ,用 . 划分

# ***************************
lib -> common -> index.py# ***************************
s1.pyfrom lib.common import index
print(index.__package__)#lib.common

4.__cached__   缓存

5.__name__

  如果执行当前的 .py文件, name=main , 如果通过导入py文件,他们的name=他们名字

from lib.common import indexprint(__name__)
print(index.__name__)# __main__
# lib.common.index

  调用主函数前,先加 if __name__ == '__main__'

# index.pydef f1():print('hello!')if __name__ == '__main__':f1()# 执行index.py 输出hello!********************************
# index2.pyimport index# 执行index2.py 没有输出内容

6.__loader__

7.__builtins__  内置函数在这里面

8.__spec__

第三方模块的安装

1.软件管理工具

  pip3

    1.依赖,先安装 setuptools

    2.pip3 添加到环境变量

    3. pip3 install requests

2.源码安装

  1.下载代码,安装

  2.进入文件后, python setup.py install

迭代器和生成器

1、迭代器

迭代器是访问集合元素的一种方式。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退。另外,迭代器的一大优点是不要求事先准备好整个迭代过程中所有的元素。迭代器仅仅在迭代到某个元素时才计算该元素,而在这之前或之后,元素可以不存在或者被销毁。这个特点使得它特别适合用于遍历一些巨大的或是无限的集合,比如几个G的文件

特点:

  1. 访问者不需要关心迭代器内部的结构,仅需通过next()方法不断去取下一个内容
  2. 不能随机访问集合中的某个值 ,只能从头到尾依次访问
  3. 访问到一半时不能往回退
  4. 便于循环比较大的数据集合,节省内存
>>> a = iter([1,2,3,4,5])
>>> a
<list_iterator object at 0x101402630>
>>> a.__next__()
1
>>> a.__next__()
2
>>> a.__next__()
3
>>> a.__next__()
4
>>> a.__next__()
5
>>> a.__next__()
Traceback (most recent call last):File "<stdin>", line 1, in <module>
StopIteration

2、生成器

一个函数调用时返回一个迭代器,那这个函数就叫做生成器(generator);如果函数中包含yield语法,那这个函数就会变成生成器;

def func():print(11)yield 1print(22)yield 2print(33)yield 3temp = func()  # 得到生成器,此时不执行ret = temp .__next__() # 执行上一个yield和  下一个yield中间的代码
print(ret)ret = temp .__next__()
print(ret)

3、实例

a、利用生成器自定义range

def nrange(num):temp = -1while True:temp = temp + 1if temp >= num:returnelse:yield temp

b、利用迭代器访问range

for i in nrange(10):print(i)

  

转载于:https://www.cnblogs.com/5poi/p/6104229.html

【Python之路】第五篇--Python基础之杂货铺相关推荐

  1. Python之路【第二篇】:Python基础(一)

    Python之路[第二篇]:Python基础(一) 入门知识拾遗 一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. 1 2 3 if 1==1:     name ...

  2. Python之路【第一篇】:Python简介和入门

    Python之路[第一篇]:Python简介和入门 Python简介 Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗 ...

  3. 孤荷凌寒自学python第四十五天Python初学基础基本结束的下阶段预安装准备

    孤荷凌寒自学python第四十五天Python初学基础基本结束的下阶段预安装准备 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天本来应当继续学习Python的数据库操作,但根据过去我自学 ...

  4. python连载第十五篇~史上最全列表知识源码+答案

    #2017-12-19 19:34:41 December Tuesday the 51 week, the 353 day #python连载第十五篇~list列表#列表定义,访问,索引,操作,切片 ...

  5. python学习[第十五篇] 文件系统

    python学习[第十五篇] 文件系统 对文件系统访问大多数都通过os模块实现. os 模块文件/目录访问函数 文件处理 mkfifo() 创建命名通道只用于linux remove(path)/un ...

  6. Python和Java结合的项目实战_[项目实战] Python高级教程项目实战篇 Python和Java结合的项目实战 视频教程 [...

    资源介绍 课程简介:xa0xa0 Python高级教程项目实战篇 Python和Java结合的项目实战 视频教程 教学视频 ----------------------课程目录 Python项目实战篇 ...

  7. 黎想深度访谈腾讯顶级产品经理的进阶之路——第五篇《匠心》

    16个月精心打磨,9位顶级产品专家研讨提炼,凝聚腾讯产品经验的八集八分钟产品课分别从用户.定位.需求.时机.匠心.危机.合作.商业角度出发,还原产品背后的故事,分享给你腾讯产品的心法.艺形艺意工作室创 ...

  8. python字符型数据_Python基础【第五篇】:基础数据类型(字符型)

    String(字符串) 字符串的形式 在python中字符串可以用' '(单引号)," "(双引号),和''' '''(三个单引号). string1 = 'james'strin ...

  9. 原创:《Python之路实战40篇》PDF高清版,限时下载!

    内容简介 1 <Python之路40篇实战 .pdf>包含Python篇.数据分析篇.机器学习篇等 3 大模块,目录如下: 下载方式 2 关注公众号「Python与算法社区」,后台回复一个 ...

  10. Python金融系列第五篇:多元线性回归和残差分析

    作者:chen_h 微信号 & QQ:862251340 微信公众号:coderpai 第一篇:计算股票回报率,均值和方差 第二篇:简单线性回归 第三篇:随机变量和分布 第四篇:置信区间和假设 ...

最新文章

  1. Git 分支设计规范
  2. 2. Dubbo和Zookeeper的关系
  3. Elasticsearch学习之快速入门案例
  4. android ipc简单理解,Android IPC 机制【1】--简介
  5. 【转载】linux-查询rpm包相关安装、卸载脚本
  6. HashMap, LinkedHashMap 和 TreeMap的区别
  7. 【转】C#执行rar,zip文件压缩的几种方法及我遇到的坑总结
  8. 皕杰报表和炎黄盈动(AWS BPM)集成 操作手册
  9. 前端:JS/26/实例:随机显示小星星
  10. TensorFlow——tf.contrib.layers库中的相关API
  11. c语言读一字节程序,C语言读写二进制文件
  12. 华为NP课程笔记23-VRRP
  13. vos3000v2.1.6.0客户端 vos3000 6.0下载
  14. 【打印机】mac上添加打印机
  15. day42.自动关机小程序
  16. MATLAB求单位阶跃响应,并分析参量的影响。自控例题。
  17. HTML入门笔记(带源文件)
  18. 中国石油大学《微观经济学》第一次在线作业
  19. python nose模块简单使用
  20. 为什么谷歌不起诉华为的鸿蒙系统?

热门文章

  1. 常见的IE浏览器的一些兼容问题及解决方法
  2. rcp(插件开发) 如何查找自己定义的扩展点
  3. 服务器IIS无法提供某种扩展名的文件的下载或访问某种类型文件提示http 404 错误时的解决办法...
  4. 【正一专栏】今晚国足能上演奇迹吗?
  5. 离线轻量级大数据平台Spark之MLib机器学习库概念学习
  6. Leetcode 152. 乘积最大子序列 解题思路及C++实现
  7. Leetcode 392. 判断子序列 解题思路及C++实现
  8. 数据结构源码笔记(C语言):B树的相关运算算法
  9. Linux系统下安装phpmyadmin方法
  10. Zookeeper 入门