来源:python中国网 时间:2019-06-06

  python字符串的内容非常多,前面介绍过很多,现在补充字符串格式化、转义及原始字符串的一些知识。

  一:字符串格式化:

  在许多编程语言中都包含有格式化字符串的功能,Python中内置有对字符串进行格式化的操作符%。看例子说话:

# -*- coding: utf-8 -*-
print("I'm %s.I'm %d year old"%('laodong',28))
    
D:python3installpython.exe D:/python/py3script/python66.py
I'm laodong.I'm 28 year old
Process finished with exit code 0
    


  上面的例子中,"I'm %s.I'm %d year old"为我们的模板。%s为第一个格式符,表示一个字符串。%d为第二个格式符,表示一个整数。('laodong',99)的两个元素'laodong'和28为替换%s和%d的真实值。

  格式化字符串时,Python使用一个字符串作为模板。模板中有格式符,这些格式符为真实值预留位置,并说明真实数值应该呈现的格式。Python用一个tuple将多个值传递给模板,每个值对应一个格式符。

  我们还可以用词典来传递真实值。如下:
 

# -*- coding: utf-8 -*-
print("I'm %(name)s.I'm %(age)d year old" %{'name':'laodong','age':28})
        
D:python3installpython.exe D:/python/py3script/python66.py
I'm laodong.I'm 28 year old
Process finished with exit code 0
        


字符串格式化操作符%如下:
 

字符串格式化
%c 转换成字符(ASCII码值,或者长度为一的字符串)
%r 优先使用repr()函数进行字符串转换
*%s 优先使用str()函数进行字符串转换
%d/%i 转换成有符号十进制数
%u 转换成无符号十进制数
%o 转换成无符号八进制数
%x/%X 转换成无符号十六进制数(x/X表示转换后的字符大小写)
%e/%E 转换成科学计数法
%f/%F 转换成浮点数(小数部分自然截断)
%g/%G %e和%f %E和%F的简写
%% 输出%

 

字符串格式化辅助指令(自己尝试用法)
符号 作用
* (代表数字)定义宽度或小数点精度
- 用做左对齐
+ 在整数前面显示加号(+)
在正数前面显示空格
# 在八进制数前面显示零(0),十六进制前面显示0x或0X
0 显示的数字前面填充‘0’而不是默认的空格
% '%%'输出百分号
(var) 映射变量(字典参数)
m.n m是显示的最小宽度,n是小数点后的位数(如果可用的话)

  (2) formate函数字符串格式化

  上面一堆%东西太难记了,而且还要注意数据类型,有个更强大的函数可以忽略数据类型,就是formate函数,使用format函数来进行字符串的格式化,不仅速度快,凡是%能够实现的功能它都有,%没有的它也有。下面展示一些基础用法!

# -*- coding: utf-8 -*-
# 普通的位置插入(只使用{}进行占位)
str_demo = "My name is {}, I'm {} years old.".format('laodong', 28)
print(str_demo)
# 指定位置插入(在花括号里面指明参数位置)
str_demo = "My name is {1}, I'm {0} years old.".format(28, 'laodong')
print(str_demo)
# 指定参数名称(在花括号里面写入参数名称)
str_demo = "My name is {name}, I'm {age} years old.".format(age=28, name='laodong')
print(str_demo)
# 对于重复参数的使用(重复参数只需填写参数即可)
str_demo = "{0} cang laoshi, {0} world.".format('hello')
print(str_demo)
        
D:python3installpython.exe D:/python/py3script/python66.py
My name is laodong, I'm 28 years old.
My name is laodong, I'm 28 years old.
My name is laodong, I'm 28 years old.
hello cang laoshi, hello world.
Process finished with exit code 0
        


  二:字符串转义:

  转义就是失去原来的意义!比如要在单引号的字符串中使用单引号,或者是双引号中使用双引号,那么就需要进行转义才能正常使用。

# -*- coding: utf-8 -*-
print("我们n来了")
print("我们---
---来了")
print(" "双引号里面有双引号" ")
            
D:python3installpython.exe D:/python/py3script/python66.py
我们n来了
我们---
---来了
 "双引号里面有双引号" 
Process finished with exit code 0
            


  字符串中如果包含一些ASCII转义字符的时候,往往也会被python转义成ASCII转义字符。

转义字符串

 

  三:原始字符串

  在原始字符串中,所有的字符都是直接按照字面的意思来使用,可以让转义失去作用,即没有转义特殊或不能打印的字符。在字符串前面用字母r/R即代表原始字符串。

# -*- coding: utf-8 -*-
print(r"我们---
---来了")
print(r" "双引号里面有双引号" ")
                
D:python3installpython.exe D:/python/py3script/python66.py
我们---
---来了
 "双引号里面有双引号" 
Process finished with exit code 0