Python知识学习05——字符串操作

本篇主要介绍两部分内容:

  1. 字符串与数
  2. 字符串的常见操作

字符串与数

1
2
3
4
5
a = 100
str(a) # 数转字符串

b = "100"
int(b) # 字符串转数

求字符串长度:

1
2
a = "1234"
len(a)

Python字符串拼接的两种方式:

方式一:

1
2
3
a = "123"
b = "456"
c = "<" + a + b + ">"

方法二:

1
2
3
a = "123"
b = "456"
c = "<%s>"%(a + b)

通过字符串下标获取字符:

1
2
a = "abcde"
print(a[1])

字符串的切片(包头不包尾):

1
2
3
>>> a = "abcdefg"
>>> a[2: 5]
cde

字符串的切片——从第三个取到倒数第二个:

1
2
3
>>> a = "abcdefg"
>>> a[2: -1]
cdef

字符串的切片——从第三个取到最后一个:

1
2
3
>>> a = "abcdefg"
>>> a[2: ]
cdefg

切片的步长——取下列字符串第二个字符到倒数第二个字符,间隔1个字符:

1
2
3
>>> a = "123456789"
>>> a[1: -1: 2]
2468

字符串的逆序:

1
2
3
>>> a = "123456789"
>>> a[-1: :-1]
987654321

字符串的逆序——简化:

1
2
3
>>> a = "123456789"
>>> a[: :-1]
987654321

字符串的常见操作

find()函数(查找 首次出现位置的下标):

1
2
3
>>> myStr = "hello world!"
>>> myStr.find("o")
4

rfind()函数(查找 最后一次出现位置的下标):

1
2
>>> myStr = "hello world!"
>>> myStr.rfind("o")

index()函数(查找对应字符串 首次出现的索引,类似find()

1
2
3
>>> myStr = "hello world!"
>>> myStr.index("o")
4

rindex()函数(查找对应字符串 最后一次出现位置的下标,类似rfind()):

1
2
>>> myStr = "hello world!"
>>> myStr.rindex("o")

提示1:find()和index()函数都不仅仅可以对单个字符使用,还可以对字符串使用

提示2:find()函数若查询无果,返回-1,而index()函数则会报错

count()函数(查找该字符串在另一字符串中的出现次数):

1
2
3
4
>>> a = "hello, just say hello"
>>> b = "hello"
>>> print(a.count(b))
2

replace()函数(替换):

1
2
3
a = "I love Java"
b = "Python"
a.replace("Java", b)
1
2
3
a = "I love Java, Java is my love"
b = "Python"
a.replace("Java", b, 1)

提示:替换并不会修改原字符串,只会把修改后的结果作为返回值返回,因为字符串不可变

split()函数(切割):

1
2
3
>>> a = "I love China, China is my country"
>>> print(a.split(" "))
['I', 'love', 'China,', 'China', 'is', 'my', 'country']

注意:字符串split缺省参数就是按照空白符分割,多个空格也视为是一个整体的空白字符,只会切割一次

注意:split可以接收第二个参数,代表切割次数

splitlines()函数(切割换行符):

1
2
>>> '1\r2'.splitlines()
['1', '2']

注意:可以传入True代表保留行分割符,三种行分隔符都已经考虑进去了

capitalize()函数(把字符串第一个字符大写):

1
2
3
>>> a = "i love china"
>>> a.capitalize()
'I love china'

title()函数(把字符串每一个单词大写):

1
2
3
>>> a = "i love china"
>>> a.title()
'I Love China'

startswith()函数 & endwith()函数(判断字符串是否以某字符串开头或结尾)

1
2
3
>>> a = "China is a beautiful country"
>>> a.startswith("China")
True
1
2
3
>>> a = "China is a beautiful country"
>>> a.endswith("China")
False

lower()函数 & upper()函数(将字符串中的小写/大写字母转换为大写/小写字母)

1
2
3
>>> a = "AbCdefg"
>>> print(a.upper())
ABCDEFG
1
2
3
>>> a = "AbCdefg"
>>> print(a.lower())
abcdefg

提示:大小写转换并不会修改原字符串,只会把修改后的结果作为返回值返回,因为字符串不可变

center()函数(将字符串用空格填充,字符串居中)

1
2
3
>>> a = "如果大海能够,带走我的哀愁"
>>> a.center(50)
' 如果大海能够,带走我的哀愁 '

提示:并不会修改a,而是以返回值的形式给出修改结果

ljust()函数(将字符串用空格填充,字符串居中)

1
2
3
>>> a = "就让我用一生等待"
>>> a.ljust(50)
'就让我用一生等待 '

提示:同上

rjust()函数(将字符串用空格填充,字符串居中)

1
2
3
>>> a = "就让我用一生等待"
>>> a.rjust(50)
' 就让我用一生等待'

提示:同上

以上三个函数也可以使用指定字符进行填充:

1
2
3
4
5
6
7
8
9
10
11
>>> a = "就让我用一生等待"
>>> a.rjust(50, "=")
'==========================================就让我用一生等待'
```

**lstrip()函数**(去除字符串左边的空白符)

```python
>>> a = " hello world "
>>> a.lstrip()
'hello world '

rstrip()函数(去除字符串右边的空白符)

1
2
3
>>> a = "     hello world    "
>>> a.rstrip()
' hello world'

strip()函数(去除字符串左右两边的空白符)

1
2
3
>>> a = "     hello world    "
>>> a.strip()
'hello world'

partition()函数(以给定字符串为中心,切割原字符串为三个元素的元组)

该函数也较为常用,需要和split()进行对比

1
2
3
>>> a = "hello world, I love use Java!"
>>> a.partition("love")
('hello world, I ', 'love', ' use Java!')

提示:以从左到右第一个为准,rpartition()函数则相反,这里不再举例

splitlines()函数(以换行符\n作切割,返回列表)

1
2
3
>>> a = "窗前明月光,\n疑似地上霜。\n举头望明月,\n低头思故乡。"
>>> a.splitlines()
['窗前明月光,', '疑似地上霜。', '举头望明月,', '低头思故乡。']

isalpha()函数(判断字符串内容是否是字母)

1
2
3
>>> a = "abc"
>>> a.isalpha()
True

isdigit()函数(判断字符串内容是否是数字)

1
2
3
>>> a = "1a2"
>>> a.isdigit()
False

isalnum()函数(判断字符串内容是否仅由数字和字母组成)

1
2
3
>>> a = "1a2"
>>> a.isalnum()
True

提示:函数名alnum意为:alpha前两个字母 + num

isspace()函数(判断字符串内容是否是纯空格组成)

1
2
3
>>> a = "  1"
>>> a.isspace()
False

join()函数(用一个字符串连接列表中各个元素,组成新的字符串)

1
2
3
4
>>> a = ["hello", "world", ",", "I", "love", "Java"]
>>> b = " "
>>> b.join(a)
'hello world , I love Java'