字符串是 Python 中最常用的数据类型。我们可以使用引号( ’ 或 " )来创建字符串。
创建字符串很简单,只要为变量分配一个值即可
str1 = 'Hello World!'
str2 = "Runoob"
print(str1)
print(str2)
#输出重复字符串
str3 = str2 * 3
print(str3)
# 输出 Hello World!
str1 = 'Hello'
str2 = 'World'
"""
方式:+ 连接
使用这种方式进行字符串连接的操作效率低下,因为python中使用 + 拼接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,当拼接字符串较多时自然会影响效率
"""
str3 = str1 + " " + str2 + "!"
print(str3)
"""
方式:通过str.format()方法拼接
通过这种方式拼接字符串需要注意的是字符串中{}的数量要和format方法参数数量一致,否则会报错
"""
str4 = "{} {}!".format(str1, str2)
print(str4)
"""
方式:通过(%)操作符拼接
这种方式与str.format()使用方式基本一致。
"""
str5 = '%s %s!' % (str1, str2)
print(str5)
"""
方式:通过()多行拼接
遇到未闭合的小括号,自动将多行拼接为一行
"""
str6 = (
"Hello"
" "
"World"
"!"
)
print(str6)
"""
方式:通过F-strings拼接
在python3版本中,提出一种新型字符串格式化机制,被称为“字符串插值”或者更常见的一种称呼是F-strings,F-strings提供了一种明确且方便的方式将python表达式嵌入到字符串中来进行格式化
"""
str7 = f'{s1} {s2}!'
print(str7)
# 注意:F-strings的运行速度很快,比%-string和str.format()这两种格式化方法都快得多。
访问字符串中的某个字符
var1 = 'Hello World!'
s1 = var1[0]
s2 = var1[1]
s3 = var1[2]
s4 = var1[-1]
print ("第一个字母 ", s1)
print ("第二个字母 ", s2)
print ("第三个字母 ", s3)
print ("最后一个字母",s4)
截取字符串中的一部分
str = '0123456789′
# 简单截取
print(str[1:5]) # 从头开始截取到给定下标之前
print(str[:4]) # 从头开始截取到给定下标之前
print(str[6:]) # 从给定下标开始截取到结尾
print(str[:]) # 截取字符串的全部字符
# 步长
print(str[0:7:2]) # 隔一个取一个
# 较复杂,适情况而定
print(str[:-3]) # 截取从头开始到倒数第三个字符之前
print(str[::-1]) # 创造一个与原字符串顺序相反的字符串
print(str[-3:-1]) # 截取倒数第三位与倒数第一位之前的字符
print(str[-3:]) # 截取倒数第三位到结尾
print(str[:-5:-3]) # 逆序截取
age = 18
name = "zhangsan"
weight = 113.2459
height = 172.89
# %d 放一个整型 %s 放一个字符串型 %f 放一个浮点型 %.nf 保留n位小数浮点型 占位符
print("姓名: ", name, "年龄: ", age, "身高: ", height)
print("姓名: %s 年龄: %d 身高: %f 体重:%.2f" % (name, age, height, weight))
在需要在字符中使用特殊字符时,python用反斜杠(\)转义字符
# \(在行尾时) 续行符
long_string = "Prints the values to a stream, or to sys.stdout by default. file:\
a file-like object (stream); defaults to the current sys.stdout."
print(long_string)
# \n 换行符
long_string = "Prints the values to a stream, or to sys.stdout by default. file:\n a file-like object (stream); defaults to the current sys.stdout."
print(long_string)
# \t 制表符(表示4个空格)
str = "hello\tword"
print(str)
# \\ 反斜杠符号
long_string = "Prints the values to a stream, or to sys.stdout by default. file:\\n a file-like object (stream); defaults to the current sys.stdout."
print(long_string)
# r"" 批量转义
str = r"hello\tworld\nhello\tworld"
print(str)
# \' 转义单引号
str = 'hello \'word\' !'
print(str)
# \" 转义双引号
str = "hello \"word\" !"
print(str)
len(str) str为要获取长度的字符串
str = "hello"
print(len(str))
>>5
count(string, [start], [end]) 返回字符串中string出现的次数,可以指定范围,不写范围默认从头到尾。
# 无范围查询
s = "duanbaba is very very good man"
very_count = s.count("ba")
print(very_count)
# 指定范围查询
very_count = s.count("ba", 6, 50)
print(very_count)
strip: 用来去除头尾字符、空白符(包括\n、\r、\t、’ ‘,即:换行、回车、制表符、空格)
lstrip:用来去除开头字符、空白符(包括\n、\r、\t、’ ‘,即:换行、回车、制表符、空格)
rstrip:用来去除结尾字符、空白符(包括\n、\r、\t、’ ',即:换行、回车、制表符、空格)
*注意:*这些函数都只会删除头和尾的字符,中间的不会删除。
用法分别为:
string.strip([chars])
string.lstrip([chars])
string.rstrip([chars])
*注意:*它返回的是去除头尾字符(或空白符)的string副本,string本身不会发生改变。
s = " hoqell oAS d "
print(s)
# 去除头尾
print(s.strip())
#从左侧去除
print(s.lstrip())
#从右侧去除
print(s.rstrip())
str2 = '1a2b12c21'
str2.strip('12') #删除头尾的1和2
>> 'a2b12c'
str2.lstrip('12') #删除开头的1和2
>> 'a2b12c21'
str2.rstrip('12') #删除结尾的1和2
>> '1a2b12c'
s = 'hEllo pYthon'
print(s.upper())
print(s.lower())
print(s.title())
print(s.capitalize())
print(s.swapcase())
s = 'hEllo pYthon'
print(s.isupper())
print(s.islower())
print(s.istitle())
print(s.isspace())
print(s.isalnum())
print(s.isalpha())
# 都是检测是否由数字组成,区别是isnumeric()中文数字也认为是数字
s = "123"
print(s.isdigit())
print(s.isnumeric())
>>True
>>True
s = "123a"
print(s.isdigit())
print(s.isnumeric())
>>False
>>False
s = "一二三"
print(s.isdigit())
print(s.isnumeric())
>>False
>>True
s = "hello"
print(s.startswith("he"))
print(s.endswith("lo"))
检查str字符串是否包含在字符串中,可以指定范围,默认是从头到尾第一次出现得开始下标,没有返回-1
s = "very good !"
print(s.find('very'))
print(s.rfind('good'))
print(s.find("good", 0, 3))
跟find()用法一样,只不过如果str不存在会报异常
s = "very good !"
print(s.index('very'))
print(s.index('good'))
print(s.index("good", 0, 3))
replace(old_string, new_string, count)
用new_string替换old_string,默认是全部替换,如果指定了count,那么只替换前count个
# 全部替换
s = "very good very good very good"
new_s1 = s.replace("good", "nice")
print(new_s1)
# 替换指定个数
new_s2 = s.replace("good", "nice", 1)
print(new_s2)
split(str, num)
以str为分隔符截取字符串,指定num,则截取num个字符串(很少用num),num默认值为字符串长度
s = "very good very good very good"
# 全部拆分
new_s1 = s.split(" ")
print(new_s1)
# 拆分指定个数
new_s2 = s.split(" ", 3)
print(new_s2)
str.join(seq)
以指定的字符串分隔符str,将seq中的所有元素组成一个字符串
# seq 为字符串
str = " "
seq = "HELLO"
print(str.join(seq))
# seq 为列表
str = "!"
seq = ["hello", "world", "haha"]
print(str.join(seq))