第一节 字符串String
String是一个重要的数据类型,在我们平常的使用中,频率会很高。
比如我们从网页上获取出来的信息,会截成一条条字符串来处理;
比如我们读取文件的时候、写入文件的时候,都是按字符串一行一行的读取或者写入的。
字符串一般是用单引号或者双引号括起来的一串字符。(至于用单用双,除了字符串里面包含字符串的情况,别的情况下随意。)
除此之外,用单三引号、双三引号也是可以的。三引号可以写多行内容。
比如:
a = '''xxx:
你好!'''
print(a)
字符串拼接
例1.字符串拼接,用加号。
str1 = "Hello"
str2 = 'there'
s = str1 + str2
print(s)
# print(str1+str2)
字符串与数字的互相转换
例2.一串数字组成的字符串就可以用int()转换成数字。
str3 = '123'
n = str3 + 1 # 会报错
n = int(str3) + 1
print(n)
为什么需要用int()函数转换呢?看下面的例子。
例3.输入需要支付的价钱,求余额。
money = 100
name = input('输入姓名:')
print(name)
cost = input('输入需要支付的价钱:')
print(cost)
money_yu = money - cost # 报错
# print(name + '您的余额为:' + money_yu) # 报错
print(name, '您的余额为:', money_yu)
字符串操作
例4.获取字符串中的字符。
fruit = 'banana'
letter = fruit[1]
print(letter)
x = 3
letter2 = fruit[x-1]
print(letter2)
print(len(fruit))
字符串banana对应的索引。
b | a | n | a | n | a |
---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 |
str = 'Monty Python'
print(str[0:4])
print(str[:2])
print(str[8:])
print(str[:])
M | o | n | t | y | P | y | t | h | o | n | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
例5.用while循环打印字符串中每个字符。
fruit = 'banana'
index = 0
while index < len(fruit):
letter = fruit[index]
print(index, letter)
index = index + 1
例6.用for循环打印字符串中每个字符。
fruit = 'banana'
for letter in fruit:
print(letter)
例7.用关键字in判断是否存在于字符串中。
s = 'banana'
x = 'n' in s
print(x)
print('nan' in s)
print('m' in s)
if 'a' in s:
print('a is in s')
if s == 'banana':
print('Equal.')
Python String库
- str.lower() 字符串全部转换成小写
- str.upper() 字符串全部转换成大写
- str.rstrip([chars]) 去除字符串右边的字符,默认空格
- str.lstrip([chars]) 去除字符串左边的字符,默认是空格
- str.strip([chars]) 去除字符串两边的字符,默认是空格
- str.replace(old,new) 替换字符串
- str.find(sub[,start[,end]]) 查找到字符串后返回第一个字符的索引位置
- str.startwith(suffix[,start[,end]]) 判断字符串是否由其开始
- str.endswith(suffix[,start[,end]]) 判断字符串是否由其结尾
- str.capitalize() 将字符串的第一个字符转换为大写
例8.使用lower()或者upper()把字符串全部转换成大写或小写。
s = 'Hello Bob'
print(s.upper())
print(s.lower())
当我们不需要区分大小写,对字符串进行查找的时候,就需要先将其全部转换为大写或者小写。
例9.使用replace()替换字符串。
s = 'Hello Bob'
str1 = s.replace('Bob', 'Jane')
print(str1)
str2 = s.replace('o', 'X')
print(str2)
例10.使用strip()清除字符串两边的空格。
s = ' Hello, Bob. '
print('s:', s)
s1 = s.lstrip()
print('s1:', s1)
s2 = s.rstrip()
print('s2:', s2)
s3 = s.strip()
print('s3:', s3)
str = '******Hello, Bob.-------'
print('str:', str)
str1 = str.lstrip('*')
print('str1:', str1)
str2 = str.rstrip('-')
print('str2:', str2)
str3 = str1.rstrip('-')
print('str3:', str3)
例11.使用startwith()和endswith()判断……
s = 'Please have a nice day.'
print(s.startswith('Please'))
print(s.startswith('please'))
print(s.endswith('day.'))
例12.find()使用。查找到字符串后返回第一个字符的索引位置。
find()函数用法:
str.find(sub, start=0, end=None)
- sub:要查找的子字符串;
- start:查找子字符串的开始位置,默认为 0;
- end:查找子字符串的结束位置,默认为字符串的长度。
s = 'banana'
n1 = s.find('n')
print('n1:', n1)
n2 = s.find('nan')
print('n2:', n2)
n3 = s.find('z') # 找不到等于-1
print('n3:', n3)
练习:获取字符串中的邮箱
获取字符串'From stephen.marquard@qq.com Sat Sep 22 20:33:16 2019'
中的邮箱地址。
用find()解决的思路:
- 邮箱有@字符,可以观察字符串,然后先找到@字符。
- 然后根据@字符,往后一个位置,到空格,就表示邮箱地址到这个空格就结束了。
- 再看数据字符串,发现第一个空格后面就开始是邮箱地址了,那只要获取第一个空格的位置就可以了。