python_字符串基础

>>> s = "abc"
>>> type(s)
<class 'str'>
>>> s = "abc".encode("utf-8")
>>> type(s)
<class 'bytes'>

#'a'--->'z':97--->122  'a'到'z'对应的ascii码
#'A'--->'Z':65--->90   'A'到'Z'对应的ascii码

>>> ord('a')
97
>>> ord('z')
122
>>> ord('A')
65
>>> ord('Z')
90
>>> chr(97)
'a'

#将字符串"b"替换为"1"

>>> s='abc'
解法1:
>>> list(s)
['a', 'b', 'c']
>>> letter_list = list(s)
>>> letter_list[1]="1"
>>> "".join(letter_list)
'a1c'
解法2:
>>> s='abc'
>>> s.replace("b","1")----全局替换
'a1c'
解法3:
>>> s[0]+"1"+s[-1]
'a1c'
解法4:
>>> "1".join(s.split("b"))
'a1c'
解法5:
>>> s='abc'
>>> import re
>>> print(re.sub(r'b','1',s))
a1c

字符串常用方法

#以xx为开头,以xx结尾,是的话返回True,否的话返回False
>>> s='abc'
>>> s.startswith("a")
True
>>> s.startswith("ab")
True
>>> s.endswith("bc")
True

#去空白
>>> "   \t\nabc         ".strip()
'abc'
>>> "   \t\nabc         ".lstrip()
'abc  \t'
>>> "   \t\nabc         ".rstrip()
'  \t\t\nabc'

#大小写转换
>>> "a".upper()
'A'
>>> "aB".lower()
'ab'
#大小写互转
>>> "aB".swapcase()
'Ab'

#对齐,位数不足默认补空格
#左对齐
>>> "abc".ljust(10)
'abc       '
#右对齐
>>> "abc".rjust(10)
'       abc'
#居中
>>> "abc".center(10)
'   abc    '

#对齐,位数不足,使用指定字符填充(仅能指定一个字符)
>>> "abc".ljust(10,"*")
'abc*******'
>>> "abc".rjust(10,"*")
'*******abc'
>>> "abc".center(10,"*")
'***abc****'
#replace----全局替换
>>> "abacaaaddaa".replace("a","")
'bcdd'
#指定替换个数
>>> "abca".replace("a","xx",1)
'xxbca'
#将一个制表符替换成一个空格
>>> 'a b        c'.expandtabs(1)
'a b c'
>>> 'a b                c'.expandtabs(1)
'a b  c'

#位数不足,补零
>>> 'abc'.zfill(10)
'0000000abc'
>>> 'abc'.zfill(3)
'abc'

#计算某子串在字符串中出现的次数
>>> "abacaaaddaa".count("a")
7

#第一个首位大写
>>> "abc def".capitalize()
'Abc def'

#每个首位都大写
>>> "abc def".title()
'Abc Def'
>>> import string
>>> string.capwords("abc def")
'Abc Def'

查找字符串

#find()查找某子串的位置,默认从左边找,找不到返回-1,找到的话返回该字符串的位置
#find()可指定查找范围s.find(substring,start_index,end_index)左闭右开区间
>>> "abacaaaddaa".find("a")
0
>>> "abacaaaddaa".find("axx")
-1
#从右边开始查找
>>> "abacaaaddaa".rfind("daa")
8
#指定查找范围----仅匹配一次,不能全局查找
>>> 'abcdabc'.find('a',0,6)
0

#index()查找某字串的位置,默认从左边找,找不到会出错,找到的话返回改字符串的位置
>>> "abacaaaddaa".index("a")
0
>>> "dabd".rindex("d")
3

#全局查找
方法1:
result = []
s="abbaab"
sub="ab"
for i in range(len(s)):
    if s[i:i+len(sub)] == sub:
        result.append(i)

print (result)

方法2:
result = []
s="abbaaba"
index =0 
while 1:
    position = s.find("ab",index)
    if position != -1:
        result.append(position)
        index =position+1
    else:
        break

print (result)

split()和join()

#默认用空白切割
>>> "a b c d e".split()
['a', 'b', 'c', 'd', 'e']
>>> "a\nb\tc\rd e".split()
['a', 'b', 'c', 'd', 'e']
>>> "a*b*c*d".split()
['a*b*c*d']
#指定切割符
>>> "a*b*c*d".split("*")
['a', 'b', 'c', 'd']
#指定切割符,并指定切割次数
>>> "a*b*c*d".split("*",1)
['a', 'b*c*d']
>>> "a*b*c*d".rsplit("*",1)
['a*b*c', 'd']

#按换行符切
>>> s="1\n2\n"
>>> print(s.splitlines())#空---False
['1', '2']
#保留换行符
>>> print(s.splitlines(1))#1---True
['1\n', '2\n']
>>> print(s.splitlines(False))
['1', '2']
>>> print(s.splitlines(True))
['1\n', '2\n']

>>> "*".join(['1','2','3'])
'1*2*3'
>>> "*".join(('1','2','3'))
'1*2*3'

string里的常用常量

>>> import string
>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.ascii_lowercase
'abcdefghijklmnopqrstuvwxyz'
>>> string.ascii_uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.digits
'0123456789'
>>> string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
#去标点
>>> list(map(lambda x:x.strip(string.punctuation),"I am a boy, you r a girl! yes!".split()))
['I', 'am', 'a', 'boy', 'you', 'r', 'a', 'girl', 'yes']

以下函数是基于整个给定的字符串做判断
>>> "abc".isalpha()#是否是字母
True
>>> "abc1".isalpha()
False
>>> "abc1".isalnum()#是否是字母及数字
True
#判断数字
>>> "abc1".isdigit()
False
>>> "1234.56".isdigit()
False
判断空白
>>> " ".isspace()
True
>>> "".isspace()
False

猜你喜欢

转载自blog.csdn.net/wqq5321/article/details/82906467