Python字符串(str)用来存放文本,单引号、双引号、三引号都能定义,内容按字符序列排列,可以用下标和切片取出其中一段。
和列表不同,字符串创建后不能改某个位置上的字符,想改内容只能拼出新的字符串。
定义字符串
三种引号写法等价,三引号适合跨越多行:
s1 = 'hello'
s2 = "hello"
s3 = """跨行的
字符串"""
print(s1, s2)
print(s3)下标访问
下标从 0 开始,负数从右边数,-1 是最后一个字符:
name[0] 取到 P,name[-1] 取到 n;负下标就是从右边数,-1 是最后一个字符。
name = "Python"
print(name[0]) # P
print(name[1]) # y
print(name[-1]) # n,负下标从右往左数
print(name[-2]) # o
切片 [start:stop:step]
切片取出子串,规则是含头不含尾。省略 start 表示从开头,省略 stop 表示到末尾,step 为负时可用来反转:
s = "Hello World"
print(s[0:5]) # Hello(0 到 4)
print(s[:5]) # Hello(start 省略从 0 开始)
print(s[6:]) # World(stop 省略到末尾)
print(s[::2]) # HloWrd(隔一个取一个)
print(s[::-1]) # dlroW olleH(反转)字符串是不可变的
对某个下标直接赋值会触发 TypeError,常见做法是切片重组,或重新赋值给变量:
s = "Hello"
# s[0] = "J" # TypeError,不能这样改
s = "J" + s[1:] # 重新拼一个
print(s) # Jello常用操作
text = " hello world "
print(len(text)) # 16,含两头的空格
print(text.strip()) # "hello world",去掉首尾空白
print(text.upper()) # " HELLO WORLD "
print(text.lower()) # " hello world "
print("hello" in text) # True,成员判断
print(text.replace("world", "python")) # " hello python "拼接与重复
a = "Py"
b = "thon"
print(a + b) # Python
print(a * 3) # PyPyPy
print(", ".join(["a", "b", "c"])) # a, b, c格式化:f-string
Python 3.6 起推荐用 f-string:在引号前加 f,大括号里写变量或表达式:
name = "小明"
age = 20
print(f"你好,{name},明年{age + 1}岁")
score = 88.5
print(f"成绩:{score:.1f}") # 成绩:88.5检查与判断
s = "abc123"
print(s.isalnum()) # True,全字母数字
print("123".isdigit()) # True,全数字
print("abc".isalpha()) # True,全字母
print("Abc".isupper()) # False试着练切片
输入一个字符串,用切片输出它的反转版本,再统计长度和元音字母个数。