第一节 字符串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()解决的思路:

  1. 邮箱有@字符,可以观察字符串,然后先找到@字符。
  2. 然后根据@字符,往后一个位置,到空格,就表示邮箱地址到这个空格就结束了。
  3. 再看数据字符串,发现第一个空格后面就开始是邮箱地址了,那只要获取第一个空格的位置就可以了。

results matching ""

    No results matching ""