苍天有泪 发表于 2018-8-14 08:25:08

python字符串(二)

  一、字符串具有不可改变的特性
>>> str1 = 'your'  
>>> str1 = str1 + 'name'
  
>>> str1
  
'yourname'
  当执行第二行的时候,在内存里又开辟了一个空间存储"yourname",而不是在原来存储“your”的地方修改,使得str1指向这个新地址
  
  二、切片
>>> str='my name is sam, and i love girl'  
>>> str
  
'y'
  
>>> str
  
'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. ljustrjust   与center 类似
>>> 'name'.ljust(50, '*')  
'name**********************************************'
  
>>> 'name'.rjust(50, '*')
  
'**********************************************name'
  25. lower   将字符串的大写换成小写
>>> 'ASDF'.lower()  
'asdf'
  
>>> 'AS7766!DF'.lower()
  
'as7766!df'
  26.maketranstranslate
>>> '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. splitrsplit
>>> '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.>>>> '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'
页: [1]
查看完整版本: python字符串(二)