字符串是 Python 中最常用的数据类型。我们可以使用引号( )来创建字符串。
创建字符串很简单,只要为变量分配一个值即可。例如:

  1. var1 = 'Hello World!'
  2. var2 = "Runoob"

Python 访问字符串中的值 (查)

Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。
Python 访问子字符串,可以使用方括号来截取字符串,如下实例:

  1. var1 = 'Hello World!'
  2. var2 = "Runoob"
  3. print ("var1[0]: ", var1[0])
  4. print ("var2[1:5]: ", var2[1:5])

Python 字符串更新 (改)

  1. var1 = 'Hello World!'
  2. print ("已更新字符串 : ", var1[:6] + 'Runoob!')

Python字符串运算符

下表实例变量a值为字符串 “Hello”,b变量值为 “Python”:

操作符 描述 实例
+ 字符串连接 a + b 输出结果: HelloPython
* 重复输出字符串 a*2 输出结果:HelloHello
[] 通过索引获取字符串中字符 a[1] 输出结果 e
[ : ] 截取字符串中的一部分,遵循左闭右开原则,str[0:2] 是不包含第 3 个字符的。 a[1:4] 输出结果 ell
in 成员运算符 - 如果字符串中包含给定的字符返回 True ‘H’ in a 输出结果 True
not in 成员运算符 - 如果字符串中不包含给定的字符返回 True ‘M’ not in a 输出结果 True
r/R 原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母 r(可以大小写)以外,与普通字符串有着几乎完全相同的语法。 print( r’\n’ )

print( R’\n’ ) | | % | 格式字符串 | 请看下一节内容。 |

Unicode 字符串

Python中定义一个Unicode字符串和定义一个普通字符串一样简单:

  1. >>> u'Hello World !'
  2. u'Hello World !'

引号前小写的”u”表示这里创建一个Unicode字符串。如果你想加入一个特殊字符,可以使用Python的Unicode-Escape编码。如下例所示:

  1. >>> u'Hello\u0020World !'
  2. u'Hello World !'

IN and NOT IN

  1. a = "Hello"
  2. b = "Python"
  3. print "a + b 输出结果:", a + b
  4. print "a * 2 输出结果:", a * 2
  5. print "a[1] 输出结果:", a[1]
  6. print "a[1:4] 输出结果:", a[1:4]
  7. if( "H" in a) :
  8. print "H 在变量 a 中"
  9. else :
  10. print "H 不在变量 a 中"
  11. if( "M" not in a) :
  12. print "M 不在变量 a 中"
  13. else :
  14. print "M 在变量 a 中"
  15. print r'\n'
  16. print R'\n'

循环(迭代)
#可以迭代的变量有str,list,dict,set,tuple

  1. s10='hello world'
  2. count=0
  3. while count < len(s10):
  4. print(s10[count])
  5. count += 1
  6. #输出
  7. h
  8. e
  9. l
  10. l
  11. o
  12. w
  13. o
  14. r
  15. l
  16. d

字符串循环

  1. s10='hello world'
  2. i=0
  3. while i < len(s10):
  4. print(s10[i])
  5. i += 1
  1. s10='hello world'
  2. for c in s10:
  3. print(c)


Python字符串格式化**
python字符串格式化符号:

符号 说明
%c 格式化字符及其ASCII码
%s 格式化字符串
%d 格式化整数
%u 格式化无符号整型
%o 格式化无符号八进制数
%x 格式化无符号十六进制数
%X 格式化无符号十六进制数(大写)
%f 格式化浮点数字,可指定小数点后的精度
%e 用科学计数法格式化浮点数
%E 作用同%e,用科学计数法格式化浮点数
%g %f和%e的简写
%G %f 和 %E 的简写
%p 用十六进制数格式化变量的地址

格式化操作符辅助指令:

符号 说明
* 定义宽度或者小数点精度
- 用做左对齐
+ 在正数前面显示加号( + )
在正数前面显示空格
# 在八进制数前面显示零(‘0’),在十六进制前面显示’0x’或者’0X’(取决于用的是’x’还是’X’)
0 显示的数字前面填充’0’而不是默认的空格
% ‘%%’输出一个单一的’%’
(var) 映射变量(字典参数)
m.n. m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)
  1. print("{} {}".format('hello', 'word')) # 不设置指定位置,按默认顺序
  2. hello word
  3. print("{1} {0}".format('hello', 'word')) # 设置指定位置
  4. word hello
  5. print("{1} {0} {1}".format('hello', 'word')) # 设置指定位置
  6. word hello word
  1. print('my name is {name},my age is {age}'.format(name='jack', age=18))
  2. my name is jack,my age is 18
  3. # 通过字典设置参数
  4. dic = {'name':'jack','age':18}
  5. print('my name is {name},my age is {age}'.format(**dic))
  6. my name is jack,my age is 18
  7. # 通过列表索引设置参数
  8. my_list = ['jack', 18]
  9. print('my name is {0},my age is {1}'.format(*my_list))
  10. my name is jack,my age is 18
  11. my_list = ['jack', 18]
  12. print('my name is {0[0]},my age is {0[1]}'.format(my_list)) # "0" 是必须的
  13. my name is jack,my age is 18

案例1:

  1. 'Sam has {1:d} red balls and {0:d} yellow balls'.format(12, 31)
  2. #输出
  3. Sam has 31 red balls and 12 yellow balls

案例2: 通过列表索引设置参数

  1. array = [34, 66, 12]
  2. "A = {0}, B = {1}, C = {2}".format(*array)
  3. #输出
  4. A = 34, B = 66, C = 12

案例3: 通过字典设置参数

  1. d = {
  2. 'hats' : 122,
  3. 'mats' : 42
  4. }
  5. "Sam had {hats} hats and {mats} mats".format(**d)
  6. #输出
  7. Sam had 122 hats and 42 mats

案例4:通过字典设置参数

  1. 'Sam has {red} red balls and {green} yellow balls'.format(red = 12, green = 31)

内置函数

startswith()判断字符串以某个字符串开头,返回boolean类型
  1. name = "zhangsan"
  2. isTrue = name.startswith("zh")
  3. print(isTrue)
  4. # 打印结果:True

endswith()判断字符串以某个字符串结尾,返回boolean类型
  1. name = "zhangsan"
  2. isTrue = name.endswith("san")
  3. print(isTrue)
  4. # 打印结果:True

find()在字符串中查找指定字符串,找不到时返回-1:
  1. name = "zhangsan"
  2. isIn = name.find("an")
  3. print(isIn)
  4. # 打印结果:2
  5. # 返回字符串开始的下标

index()在字符串中查找指定的字符串,找不到时直接报错
  1. name = "zhangsan"
  2. isIn = name.index('h')
  3. print(isIn)
  4. # 打印结果:1

format()格式化输出字符串
  1. name = "{} {} zhangsan" #"{} {}"是占位符,用下边format()里边的参数填充
  2. name = name.format('I', 'am')
  3. print(name)
  4. # 打印结果:I am zhangsan

join()字符串连接
  1. name = "zhangsan"
  2. name = '*'.join(name)
  3. print(name)
  4. # 打印结果:z*h*a*n*g*s*a*n
  5. name=['h','e','l','l','o']
  6. newname=''.join(name)
  7. print(newname)
  8. #打印结果:hello

isalnum()判断字符串是否包含字母数字字符
  1. name = "zhangsan1"
  2. isTrue = name.isalnum()
  3. print(isTrue)
  4. # 打印结果:True
  5. name = "zhangsan1*"
  6. isTrue = name.isalnum()
  7. print(isTrue)
  8. # 打印结果:False

isalpha()判断是否只包含字母:
  1. name = "zhangsan"
  2. isTrue = name.isalpha()
  3. print(isTrue)
  4. # 打印结果:True
  5. name = "zhangsan1"
  6. isTrue = name.isalpha()
  7. print(isTrue)
  8. # 打印结果:False

isdigit()判断字符串只由数字构成:
  1. name = "1234"
  2. isTrue = name.isdigit()
  3. print(isTrue)
  4. # 打印结果:True
  5. name = "zhangsan1234"
  6. isTrue = name.isdigit()
  7. print(isTrue)
  8. # 打印结果:False
  1. #错误3次就退出
  2. restr=''
  3. count=0
  4. while count < 3:
  5. num = input("请%s输入:" % restr)
  6. if num.isdigit():
  7. num = int(num)
  8. print(num)
  9. break
  10. elif (count >= 2):
  11. print("错误次数太多")
  12. break
  13. else:
  14. print("请输入数字")
  15. restr = "再次"
  16. count += 1

isspace()判断字符串是否是空格:
  1. name = " "
  2. isTrue = name.isspace()
  3. print(isTrue)
  4. # 打印结果:True
  5. name = "zhang san"
  6. isTrue = name.isspase()
  7. print(isTrue)
  8. # 打印结果:False

isupper()判断字符串是否全是大写字符:
  1. name = "ZHANGSAN"
  2. isTrue = name.isupper()
  3. print(isTrue)
  4. # 打印结果:True

lower()将所有的大写字符转为小写字符:
  1. name = "ZHANGSAN"
  2. name = name.lower()
  3. print(name)
  4. # 打印结果:zhangsan

lstrip()去除字符串左边的空格:
  1. name = " zhangsan "
  2. name = name.lstrip()
  3. print(name)
  4. # 打印结果:zhangsan

rstrip()去除字符串右边的空格:
  1. name = " zhangsan "
  2. name = name.rstrip()
  3. print(name)
  4. # 打印结果: zhangsan

strip()去除字符串2边的空格:
  1. name = " zhangsan "
  2. name = name.strip()
  3. print(name)
  4. # 打印结果:zhangsan

replace()字符串替换:
  1. name = "zhangsan"
  2. name = name.replace("zhang", "li")
  3. print(name)
  4. # 打印结果:lisan

split()字符串分割,默认是空格:
  1. name = "zhang san"
  2. name = name.split()
  3. print(name)
  4. # 打印结果:['zhang', 'san']