python3 字符串

113 阅读4分钟
# 字符串 , 单引号或者双引号都可以

a = "Hello world"
b = "h"
c = 'h'

print(f"{type(a)} {type(b)} {type(c)} ")
# <class 'str'> <class 'str'> <class 'str'>

# 三引号,可以保留原来的代码格式。三引号可以是单引号也可以是双引号

a = '''hello world'''
b = """hello world"""
c = """hello
world
!"""
print(a)
print(b)

print(c)
# hello
# world
# !

# 如果字符本身有引号

# 双引号可以包含单引号,单引号可以包含双引号
a = "Hello 'world"
b = 'hello "world'
# 也可以使用转移字符
c = 'hello 'world'
print(a)
print(b)
print(c)

# 格式化输出
name = "小明"
age = 18
# 如果只需要输出一个,可以直接使用%
print("name is %s" % name)
# 如果需要输出多个,则需要使用小括号,然后用逗号分开
print("name is %s age is %d" % (name, age))
# python3.6之后,也可以直接使用f字符串
print(f"name is {name} age is {age}")

# 字符串输入,输入的内容都是字符串
# value = input("请输入任意内容")
# print(type(value))

# 下标语法
a = "Hello world"
print(a[0])
# print(a[100]) # 如果下标越界,则会报错

# 切片 序列[开始位置:结束位置:步长]
a = "123456789"
# 索引是从0开始,包含开始,不包含结束位置
print(a[1:3])  # 123
# 省略结束位置,则默认所有内容
print(a[1:])  # 23456789
# 省略开始位置,则默认从起始位置开始
print(a[:2])  # 12
# 都省略,则表示所有内容
print(a[:])  # 123456789
# 步长默认是1
print(a[2::2])  # 3579

print("字符串切片步长是负数")
print(a[::-1])  # 987654321 负数表示倒叙
print(a[-5:-1])  # 5678 起始位置和结束位置是负数表示从末尾开始
print(a[-5:-6])  # 空 因为步长默认是1,-5+1为-4,因此,无法满足条件
print(a[-5:-6:-1])  # 5

字符串方法 find

# 字符串方法 find(要查找的字符串,开始位置,结束位置) 开始位置和结束位置都可以省略,
# rfind从右侧开始查找,rindex从右侧开始
a = "hello world"
value1 = a.find("l")
print(value1)  # 2,如果找到了,则返回第一个找到的索引
value1 = a.find("ll")
print(value1)  # 2 find可以传递多个字符串
value1 = a.find("aa")
print(value1)  # -1 如果没有找到,则返回-1

print(a.count("l"))  # 3 查看某个字符串出现的次数
print("hlllo".count("ll"))  # 1 对于匹配上的结果会跳过,比如第一个和第二个l一组,第二个和第三个无法再形成一组
print("hllo".count("l", 2))  # 1 设置开始位置
print("hh".count("1111"))  # 0 如果没有查找到,则返回0

print("可以传递查找范围")
print("123456".find("3", 4))  # -1 指定开始位置
print("123456".find("3", 1, 4))  # 2 同时指定开始和结束位置
# print("123456".find("3", , 4)) # 如果省略开始位置,则不能指定结束位置

字符串方法 replace

# 字符串 replace
# 字符串.replace(要被替换的子串,新替换的字串,替换次数) 替换次数如果省略,则全部替换
# 字符串替换之后会返回一个新的字符串,原来的字符串不会被修改
print("hello world".replace("l", "-"))  # he--o wor-d
print("hello world".replace("l", "-", 1))  # he-lo world 指定修改的次数

字符串方法 split

# split 分割字符串

a = "hello world"
b = a.split("l")
print(a)  # hello world
print(b)  # ['he', '', 'o wor', 'd'] 合并字符串

字符串 join

# join 合并字符串
a = ["a", 'b', 'c']
b = "--".join(a)
print(a)  # ['a', 'b', 'c']
print(b)  # a--b--c
print(type(b))  # <class 'str'>

字符串大小写

a = "hello world"
b = a.capitalize()  # 返回新的字符串,新的字符串首字母大写
print(a)  # hello world
print(b)  # Hello world

b = a.title()  # 返回新的字符串,新的字符串每个单词的首字母大写
print(b)  # Hello Worl

b = a.upper()  # 小写全部转成大写
print(b)  # HELLO WORLD

b = b.lower()  # 大写全部转成小写
print(b)  # hello world

字符串 去除空格

# 去除的空格包括空格,\t,\n等所有不显示内容的空白
print(" \t\nhello world ".lstrip())  # 'hello world ' 左边第一个字符前面的所有空格
print(" hello world ".rstrip())  # ' hello world'去除右边的所有空格
print(" hello world ".strip())  # 'hello world' 去除左右两边的空格

字符串 对齐

# 字符串对齐

a = "aa".ljust(10)
b = "aa".ljust(10, '—')  # 左对齐
c = "aa".rjust(10, '—')  # 右对齐
d = "aa".center(10, '—')  # 右对齐
print(a)
print(b)
print(c)
print(d)
'''
aa        
aa————————
————————aa
————aa————
'''

字符串的开始和结束

# 字符串开始和结束判断

print("Hello world".startswith("Hello"))  # True
print("Hello world".endswith("world"))  # True
print("Hello world".startswith("world", 6))  # True 可以指定开始位置
print("Hello world".startswith("ld", 1, 3))  # Fasle 可以指定开始位置和结束位置

判断字符串数据内容

# 字符判断
print("hello world".isalpha())  # False 判断所有内容是否都是字母
print("helloworld".isalpha())  # True

# 数字判断
print("123".isdigit())  # True 判断所有内容是否都是数字

print("123abc".isalnum())  # True 判断内容是否都是字母或者数字

print(" \t \n".isspace())  # True 判断内容是否都是空白字符串 制表和换行也是空白字符