python编程入门之六:字符串详讲

第六章 字符串

其实我们在讲python基础部分的时候,已经涉及到字符串的讲解了,但是我们讲的并不是很深入,作为python最常用的类型,字符串肯定有属于它自己的奥秘,下面我们对字符串进行详细的讲解。

6.1 字符串

不知道大家在学习了字符串,列表和元组之后,有没有发现其实他们之间是存在很多共同点的,排去共同的BIF不说,他们的性质其实也很相近,就拿字符串和列表来说吧。

list1 = ['a', 'b', 'c', 'd']
string1 = "abcd"

(1)其实他们都是通过特定的符号,然后符号内放置一些元素组成的,所以我们现在可以回想一下,我们学过的列表都有哪些操作方法来着?那些方法放到字符串里是不是也能用呢?好了,话不多说,我们先来看几个例子。

str1 = "My name is Hopes Li"
print(str1[:7])
print(str1[11:])
print(str1[:11] + 'not ' + str1[11:])

结果:

My name
Hopes Li
My name is not Hopes Li

所以看来,切片在字符串中同样能用。
(2)然后再看下一个例子。

str2 = "abcabcdeaafffg"
print(str2.count("a"))
print(str2.count("abc"))

结果:

4
2

通过上面这个例子,我们可以看出来,count()方法用来统计制定字符出现次数也可以在字符串中使用,但是一定要注意,count方法的括号内的字符一定要用引号括起来,不然就会报错。
(3)那接下来让我们通过dir方法来看一下字符串究竟有哪些方法可以用呢。

print(dir(str))

结果:

['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', 
'__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', 
'__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__',
 '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold',
  'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha',
   'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 
   'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split',
    'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

大家看到后是不是都蒙了,这也太多了吧,怎么感觉比列表和元组加起来的方法都要多呢?没错,恰恰是因为字符串作为最常用的类型,它肯定需要满足各种各样的需求,所以字符串的BIF才会如此的强大,通过下面的表格,我们来看看这些方法都是用来做什么的吧。
1
2
3
4
4
看到没有,确实有太多的方法了,但我们不可能一个一个的详细讲,大家可以记住一些常用的,那些不常用的如果用到再回来查就好了,下面我列举几个算是比较常用的方法。

str1 = "hello world"
print(str1.capitalize())
str2 = "HELLO WORLD"
print(str2.casefold())

结果:

Hello world
hello world

另外我们再补充两个关于索引的方法,一个是index一个是find,好了,我们看例子。

str1 = "My name is Hopes Li"
print(str1.find("name"))
print(str1.index("Hopes"))
print(str1.find("Hello"))
print(str1.index("Hello"))

结果:

3
11
-1
ValueError: substring not found

所以这两个方法都可以对字符串内的字符进行索引,得到的是这个字符的起始位置,但是有什么不同呢,想必大家也看出来了,当我用find索引一个不存在的字符时,它会返回一个-1,但如果我用index索引一个不存在的字符,它就会报错,所以我们可以在不同的场合内使用这两个索引。

我们再来看几个其他的方法------join方法。

str1 = "Hopes"
print("_".join(str1))

结果:

H_o_p_e_s

看到这个结果是不是感觉有点神奇,我们在每个字符的中间加入了一个下划线,但是我们也注意到了,这个join的用法有点不同,我们把需要插入的字符放到join的前面,然后将被插入的字符串变量放到join的括号内,这种方法对于要大量拼接字符串的工作提供了便利。

replace方法,将指定的字符进行替换。

str1 = "My name is Hopes"
print(str1.replace("Hopes", "Alex"))

结果:

My name is Alex

其中replace内的第一个字符为被替换的对象,第二个字符为要替换的对象。

split方法,用于拆分字符串

str1 = "My name is Hopes"
print(str1.split())

结果:

['My', 'name', 'is', 'Hopes']

所以我们可以看出,split的作用和join的作用完全相反,split是将字符串按一定规律拆分,并且是拆分成一个列表格式,我们先了解这几种内置方法,其他的BIF在以后的学习中我们再进行介绍。

猜你喜欢

转载自blog.csdn.net/qq_37744263/article/details/82830094