二、字符串
2.1 基本性质
- Python中的字符串用单引号 ’ 或双引号 " 括起来,同时使用反斜杠 \ 转义特殊字符。
- python中单引号和双引号使用完全相同。
- 反斜杠 \ 可用来转义,使用r可以让反斜杠不发生转义。如 r"this is a line with \n" 则\n会显示,并不是换行。
- 按字面意义级联字符串,如"this " "is " "string"会被自动转换为this is string。
- Python 中的字符串有两种索引方式,从左往右以 0 开始,从右往左以 -1 开始。
- Python中的字符串不能改变。
- Python 没有单独的字符类型,一个字符就是长度为 1 的字符串。
- 字符串的截取的语法格式如下:变量[头下标:尾下标:步长]
str = 'Runoob'
print (str) # 结果:Runoob
print (str[0:-1]) # 结果:Runoob
print (str[0]) # 结果:R
print (str[2:5]) # 结果:noo
print (str[2:]) # 结果:noob
print (str * 2) # 结果:RunoobRunoob
print (str + "TEST") # 结果:RunoobTEST
>>> print('Ru\noob')
Ru
oob
>>> print(r'Ru\noob')
Ru\noob
2.2 字符串格式化输出
Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。
在 Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法。
print ("我叫 %s 今年 %d 岁!" % ('小明', 10)) # print( "..." % ( ) )
#我叫 小明 今年 10 岁!
python字符串格式化符号表
符 号 | 描述 |
---|---|
%c | 格式化字符及其ASCII码 |
%s | 格式化字符串 |
%d | 格式化整数 |
%u | 格式化无符号整型 |
%o | 格式化无符号八进制数 |
%x | 格式化无符号十六进制数 |
%X | 格式化无符号十六进制数(大写) |
%f | 格式化浮点数字,可指定小数点后的精度 |
%e | 用科学计数法格式化浮点数 |
%E | 作用同%e,用科学计数法格式化浮点数 |
%g | %f和%e的简写 |
%G | %f 和 %E 的简写 |
%p | 用十六进制数格式化变量的地址 |
2.3 字符串"""三引号
python三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。
para_str = """这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( \t )。
也可以使用换行符 [ \n ]。
"""
print (para_str)
--------结果-----------
这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( )。
也可以使用换行符 [
]。
三引号作用:
-
自始至终保持一小块字符串的格式是所谓的WYSIWYG(所见即所得)格式
-
让程序员从引号和特殊字符串的泥潭里面解脱出来
一个典型的用例是,当你需要一块HTML或者SQL时,这时用字符串组合,特殊字符串转义将会非常的繁琐。
errHTML = '''
<HTML><HEAD><TITLE>
Friends CGI Demo</TITLE></HEAD>
<BODY><H3>ERROR</H3>
<B>%s</B><P>
<FORM><INPUT TYPE=button VALUE=Back
ONCLICK="window.history.back()"></FORM>
</BODY></HTML>
'''
cursor.execute('''
CREATE TABLE users (
login VARCHAR(8),
uid INTEGER,
prid INTEGER)
''')
2.4 格式化输出的2种方法
- ========== 方法1: print( " … %符号 … " % (值) ) ==========
Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。
在 Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法。
name = 'runoob'
print("my name is %s" % name)
print ("我叫 %s 今年 %d 岁!" % ('小明', 10)) # print( "..." % ( ) )
#我叫 小明 今年 10 岁!
python字符串格式化符号表
符 号 | 描述 |
---|---|
%c | 格式化字符及其ASCII码 |
%s | 格式化字符串 |
%d | 格式化整数 |
%u | 格式化无符号整型 |
%o | 格式化无符号八进制数 |
%x | 格式化无符号十六进制数 |
%X | 格式化无符号十六进制数(大写) |
%f | 格式化浮点数字,可指定小数点后的精度 |
%e | 用科学计数法格式化浮点数 |
%E | 作用同%e,用科学计数法格式化浮点数 |
%g | %f和%e的简写 |
%G | %f 和 %E 的简写 |
%p | 用十六进制数格式化变量的地址 |
- ========== 方法2:print( f" … { 变量or表达式 }…" ) ==========
f-string 是 python3.6 之后版本添加的,称之为字面量格式化字符串,是新的格式化字符串的语法。
之前我们习惯用百分号 (%)
f-string 格式化字符串以 f 开头,后面跟着字符串,字符串中的表达式用大括号 {} 包起来,它会将变量或表达式计算后的值替换进去,实例如下:
name = 'runoob'
print("my name is %s" % name)
print(f"my name2 is {name}")
w = {'name3':'runoob','url':'www.runoob.com'}
print(f'{w["name3"]}, {w["url"]}') # w[这里只能用双引号]
用了这种方式明显更简单了,不用再去判断使用 %s,还是 %d。
在 Python 3.8 的版本中可以使用 = 符号来拼接运算表达式与结果:
>>> x = 1
>>> **print**(f'{x+1}') # Python 3.6
2
>>> x = 1
>>> **print**(f'{x+1=}') # Python 3.8
'x+1=2'
2.5 更多内置函数
有很多内置函数,详细见 https://www.runoob.com/python3/python3-string.html