一、字符串具有不可改变的特性
>>> str1 = 'your' >>> str1 = str1 + 'name' >>> str1 'yourname'
当执行第二行的时候,在内存里又开辟了一个空间存储"yourname",而不是在原来存储“your”的地方修改,使得str1指向这个新地址
二、切片
>>> str='my name is sam, and i love girl' >>> str[1] 'y' >>> str[3:7] 'name' >>> str[-4:] #截取最后4个字符 'girl' >>> str[-1:-5:-1] #反序截取 'lrig'
三、字符串长度
>>> str='my name is sam, and i love girl' >>> len(str) 31
四、包含
>>> str='my name is sam, and i love girl' >>> 'name' in str # 不存在则报错 True >>> 'tiger' not in str True
五、循环
>>> str='your name' >>> for i in str: ... print(i) ... y o u r n a m e
六、字符串方法
1. count
>>> 'your name, ming zi'.count('n') 2 >>> 'your name, ming zi'.count('n',6) 1 >>> 'your name, ming zi'.count('n',6,8) 0
2. capitalize
>>> "youy name".capitalize() 'Youy name'
3. center
>>> "youy name".center(50,'-') '--------------------youy name---------------------'
4. encode
>>> "youy name".encode(encoding='utf-8') b'youy name'
5. endswith
>>> "youy name".endswith("me") True
6. expandtabs
>>> "\tyouy name".expandtabs(10) ' youy name'
7. format
>>> "I am %s, %d year old, I love %s" % ('Sam',12, 'dog') 'I am Sam, 12 year old, I love dog' >>> "I am {}, {} year old, I love {}".format('Sam',12, 'dog') 'I am Sam, 12 year old, I love dog' >>> "I am {2}, {0} year old, I love {1}".format(12,'dog', 'Sam') 'I am Sam, 12 year old, I love dog' >>> "I am {name}, {age} year old, I love {dong}".format(name='Sam',age=12, dong='dog') 'I am Sam, 12 year old, I love dog'
注:%s字符串,%d整型,%f浮点数
8. format_map
>>> 'My name is {name}, I am {age} year old'.format_map({'name': 'Sam', 'age': 23}) 'My name is Sam, I am 23 year old'
9. find 左边找 rfind 右边找
>>> 'My name is Sam, I am 23 year old'.find('a') # 左边找 4 >>> 'My name is Sam, I am 23 year old'.find('a',5) 12 >>> 'My name is Sam, I am 23 year old'.find('a',13, 19) 18 >>> 'yui'.find('l') # 找不到则返回-1 -1 >>> 'My name is Sam, I am 23 year old'.rfind('a') # 右边找 26
10. index
>>> 'My name is Sam, I am 23 year old'.index('a') 4 >>> 'My name is Sam, I am 23 year old'.index('a',5) 12 >>> 'My name is Sam, I am 23 year old'.index('a', 13, 19) 18 >>> 'yui'.index('l') # 找不到则,报错 Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: substring not found
11. isalnum 检查判断字符串是否包含字母数字字符
>>> 'name'.isalnum() True >>> '12'.isalnum() True >>> 'AAB'.isalnum() True >>> '!fff'.isalnum() False
12. isalpha 检测字符串是否只由字母组成
>>> 'asdf'.isalpha() True >>> '1234'.isalpha() False >>> 'gh67'.isalpha() False
13. isdecimal 非负整数 检查字符串是否只包含十进制字符。这种方法只存在于unicode对象。
>>> 'ghjjj'.isdecimal() False >>> '12'.isdecimal() True >>> '12.7'.isdecimal() False
14. isdigit 非负整数 检测字符串是否以数字组成
>>> '12'.isdigit() True >>> '12.8'.isdigit() False >>> '-12'.isdigit() False >>> '0'.isdigit() True
15. isidentifier 检测字符串是否以字母开头
>>> 'hhh'.isidentifier() True >>> '77'.isidentifier() False >>> '!@'.isidentifier() False >>> '7ggg'.isidentifier() False
16. islower
>>> 'AhhBgggG'.islower() False >>> 'hhhhh'.islower() True
17. isnumeric 检测字符串是否只由数字组成。这种方法是只针对unicode对象。
>>> '678'.isnumeric() True >>> '678.9'.isnumeric() False >>> '678.0'.isnumeric() False
18. isprintable 判断字符串中所有字符是否都属于可见字符
>>> 'hyyuuuu\nyyyyyy'.isprintable() False >>> 'hyyuuuuyyyyyy'.isprintable() True
19. isspace 检测字符串是否为空格
>>> 'jjjiiii'.isspace() False >>> ' '.isspace() True
20. istitle 判断字符串是否适合当作标题(其实就是每个单词首字母大写)
>>> 'Your Name'.istitle() True
21. isupper 判断字符串中所有字母字符是否都是大写字母
>>> 'fghhh'.isupper() False >>> 'FGGGGG'.isupper() True
22. join 字符串列表连接
>>> '+'.join('string') 's+t+r+i+n+g' >>> '+'.join(['i', 'am', 'your']) 'i+am+your'
23. strip lstrip rstrip 移除左右 空格 换行符
str = ' ggggggggggg \n' print(str) print(str.strip()) print(str.lstrip()) print(str.rstrip()) print('````````````')
24. ljust rjust 与center 类似
>>> 'name'.ljust(50, '*') 'name**********************************************' >>> 'name'.rjust(50, '*') '**********************************************name'
25. lower 将字符串的大写换成小写
>>> 'ASDF'.lower() 'asdf' >>> 'AS7766!DF'.lower() 'as7766!df'
26. maketrans translate
>>> 'i am your hero sb'.translate({'abc': '123'}) 'i am your hero sb' >>> tab = 'i your hero sb'.maketrans('abc','123') >>> 'i am your hero sb'.translate(tab) 'i 1m your hero s2'
27. partition rpartition 如果分隔符包含在字符串中,返回一个元组,第一个为分隔符左边字符串,第二个为分隔符,第三个为右边字符串
>>> 'zxcvbnvbhjuu'.partition('vb') # 匹配左边的 ('zxc', 'vb', 'nvbhjuu') >>> 'zxcvbnvbhjuu'.partition('pp') ('zxcvbnvbhjuu', '', '') >>> 'zxcvbnvbhjuu'.rpartition('vb') # 匹配右边的 ('zxcvbn', 'vb', 'hjuu') >>> 'zxcvbnvbhjuu'.rpartition('pp') ('', '', 'zxcvbnvbhjuu')
28. replace
>>> 'your name, i am a boy'.replace('a', 'B') 'your nBme, i Bm B boy' >>> 'your name, i am a boy'.replace('a', 'B', 1) 'your nBme, i am a boy'
29. split rsplit
>>> 'your name, i am a boy'.split('a') ['your n', 'me, i ', 'm ', ' boy'] >>> 'your name, i am a boy'.split('a',2) # 从左边划分 ['your n', 'me, i ', 'm a boy'] >>> 'your name, i am a boy'.rsplit('a',2) # 从右边划分 ['your name, i ', 'm ', ' boy']
30. splitlines
>>> '''My name\n is Sam, I am\n 23 year old'''.splitlines() ['My name', ' is Sam, I am', ' 23 year old']
31. startswith
>>> 'My name is Sam, I am 23 year old'.startswith('My',4,10) False >>> 'My name is Sam, I am 23 year old'.startswith('me',4,10) False >>> 'My name is Sam, I am 23 year old'.startswith('ame',4,10) True
32. swapcase
>>> 'ASfrtAAggg'.swapcase() 'asFRTaaGGG'
33. title
>>> 'you name'.title() 'You Name'
34. upper
>>> 'i am your hero sb'.upper() 'I AM YOUR HERO SB'
35. zfill
>>> "youy name".zfill(50) '00000000000000000000000000000000000000000youy name'