在前面的学习中我们已接近了解了什么是字符串,字符串的连接,输出等。下面我们开始学习字符串更高级的功能。
+ 用来连接两个字符串
* 用来重复字符串
上面两个操作符可以都可以操作变量。
a = "你好" b = a + "world" c = b * 3 print(b) print(c)如果两个或多个字符串字面量写在一起,则他们会自动的连接在一起。
d = "a" "b""c" "你好" print(d) # abc你好注意:
只都是字符串字面量才可以通过这种方法连接,变量不能参与
字符串之间不要添加任何标点符号
如果想要打破比较长的字符串,这种方式尤其有用。
text = ("窗前明月光" "疑是地上霜" "举头望明月" "低头思故乡") print(text) 字符串的长度,就是指的字符串中字符的个数。使用内置函数 len() 来获取字符串长度。 len() 可以序列的长度,后面我们会了解更多。
s = "hello world" print(len(s)) # 11 字符串中的每个字符都有一个编号,这个编号在编程语言中一般称之为索引(index、下标)。可以通过索引单独去访问字符串中的每个字符。
另外,由于 python 中没有字符类型,所以即使拿到的是单个字符也是字符串类型的。
index 是从 0 开始,最后一个字符的索引:字符串长度 - 1
s = "hello world" print(s[0]) print(s[3]) print(s[len(s) - 1]) 索引也可以是负值,表示从右开始计算。-1 就是最后一个元素的索引。 -0 和 0 是一样的。
s = "hello world" print(s[-1]) print(s[-2]) print(s[-len(s)])如果 index 超出了范围,则会抛出异常。所以使用的时候一定要小心,防止下标越界。
s = "hello world" print(s[len(s)]) 使用 index 只能获取单个的字符。而字符串的切片操作可以获取子字符串。
python 的切片操作非常的优雅!如果你使用过别的语言,就知道我为什么这么说了。
s = "life is short, use python" print(s[0:4]) # 获取下标为 0(包括) 到下标为 4(不包括) 的子字符串 "life" print(s[2:3]) # "f" print(s[2:]) # fe is short, use python print(s[:4]) # life print(s[-2:]) # on注意:
切片的时候,总是开始下标包括,结束下标不包括第一个下标和最后一个下标都可以省略。如果省略第一个下标则默认值是 0,如果省略第二个下标则默认值是字符串的长度虽然在使用下标获取单个字符的时候,如果超出范围会抛出异常。
但是在切片的时候,如果越界则不会抛出异常。
s = "life is short, use python" print(s[9:100]) # hort, use python print(s[-1:1000]) # n字符串的不可变性是指,字符串在内存中一旦创建,则字符串的内容终身无法更改。如果想获取不同的字符串,只能再重新创建一个字符串。
不可变的好处就是,共享而不用担心同步问题。因为大家都不能修改。
所以,通过下标修改字符串中的某个字符是错误,会抛出异常。
s = "life is short, use python" s[0] = "c" # 不能修改,这行代码会抛出异常如果需要不同的字符串,应该创建一个新的,如下面的代码:
s = "life is short, use python" s1 = "P" + s[1:] print(s1)前面学习了 +、*、[]、[:]运算符可以操作字符串,还有一些其他的运算符也可以操作字符串。
测试字符串是否包含这样的子字符串
s = "python" print("p" in s) # True s 中是否包含字符串`p` print("P" in s) # False与 in 的含义相反
s = "python" print("p" not in s) # False print("P" not in s) # True格式化字符串。格式化字符串有比较多的格则,与 c 语言的 printf() 的格式化规则一样。
常用的就下面 3 种。
name = input("请输入你姓名:") age = int(input("请输入你的年龄:")) print("你好%s,你今年%d, 你的工资是 %.2f" % (name, age, 30000.4598))前面学习的一些函数都是内置函数,直接调用即可。
下面再学习几个字符串对象的方法。(实例方法, 后面面向对象再具体详细学习)
需要注意:在下面的方法中, 如果是涉及到修改字符串的,一定是创建了一个新的字符串,并返回。
使用: 字符串.方法(参数) 来调用
s.capitalize()把首字母变换为大写字母,并返回字符串
s.center(w)把字符串居中,用空格填充两边。w 是填充后的总长度。如果不想用空格填充,可以传入第二个参数,必须是一个字符。
s.find(str, beg=0, end=len)方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回 -1。
s.isalnum()如果字符串的长度大于 0 ,并且所有字符都是字母或数字,则返回 True
s.isalpha()如果字符串的长度大于 0 ,并且所有字符都是字母,则返回 True
s.isdigit()如果字符串的长度大于 0 ,并且所有字符都是数字,则返回 True
s.lower()所有字母小写
s.upper()所有字母大写
s.strip([chars])把字符左右两端的 chars 去掉 。如果不传入参数,默认去除空格。 中间的不去掉。
s.lstrip([chars]) s.rstrip([chars])去掉左边或右边的指定字符,默认是空格
s.split(chars)使用 chars 去切割字符串,如果不传入 chars则默认使用 空白字符
s.swapcase()反正字符串中的大小写
s.title()标题化。意思就是说,每个单词的首字母大写,其余字母小写
s = "hello" print(s.capitalize()) print(s.center(30, "z")) print(s.find("el")) print("123".isdigit()) print("122".isnumeric()) print(" ab c ".strip()) print("aabbaa".strip("a")) print(max([100, 30, 40, 90])) print("10.2.3.5".split(".")) print("hell world".title())