哎呀吆博客

大前端爱好与探索者-Jerry

python字符串操作分类

python 0 评

人生苦短,我学python-字符串操作
python为字符串操作提供了大量方法,在记忆和查找使用上还是会有些费力。在这里我们将这些操作分为判断类型、查找和替换、大小写转换、文本对齐、去除空白字符、拆分和连接这6个类型,在分类的操作下我们就方便很多了。这本片文章中,会对每种字符操作方法给出在ipython3环境下的实例操作,以便更好的理解与区分。
一、判断类型-9

方法 说明
string.isspace() 如果string中只有空格返回True,否则返回False
string.isalnum() 如果string中只包含字母、数字返回True,否则返回False
string.isalpha() 如果string中只包含字母返回True,否则返回False
string.isdecimal() 如果string中只包含数字返回True,否则返回False
string.isdigit() 如果string中只包含数字、⑴或\u00b2类型返回True,否则返回False
string.isnumeric() 如果string中只包含数字(全角及中文数字)返回True,否则返回False
string.istitle() 如果string每个单词的首字母都为大写,其余字母为小写返回True,否则返回False
string.islower() 如果string中的字母都为小写返回True,否则返回False
string.isupper() 如果string中的字母都为大写返回True,否者返回False
 下面就上述判断类型的方法进行实例演练
1. isspace()
In [1]: str = "hello aiyayao" 
In [2]: str.isspace()
Out[2]: False

In [3]: str = " "  # 只包含空格
In [4]: str.isspace()
Out[4]: True
2. isalnum()
In [5]: str = "aiyayao" # 仅包含字母
In [6]: str.isalnum()
Out[6]: True

In [7]: str = "20180402" # 仅包含数字
In [8]: str.isalnum()
Out[8]: True

In [9]: str = "aiyayao0402" # 包含字母和数字
In [10]: str.isalnum()
Out[10]: True

In [11]: str = "aiyayao 0402" # 包含字母、数字和空格
In [12]: str.isalnum()
Out[12]: False

In [13]: str = "aiyayao\0402" #包含字母、数字和"\"
In [14]: str.isalnum()
Out[14]: False
3. isalpha()
In [15]: str = "aiyayao" # 只包含字母
In [16]: str.isalpha()
Out[16]: True

In [17]: str = "aiyayao0402" # 包含字母和数字
In [18]: str.isalpha()
Out[18]: False

In [19]: str = "hello aiyayao" # 包含字母和空格
In [20]: str.isalpha()
Out[20]: False
4. isdecimal()
In [21]: str = "20180402" # 只包含数字,其他方式都会返回False
In [22]: str.isdecimal()
Out[22]: True

In [23]: str = "aiyayao" # 只包含字母
In [24]: str.isdecimal()
Out[24]: False

In [25]: str = "aiyayao0402" # 包含数字和字母
In [26]: str.isdecimal()
Out[26]: False
5. isdigit()
In [27]: str = "20180402" 
In [28]: str.isdigit()
Out[28]: True

In [29]: str = "aiyayo0402"
In [30]: str.isdigit()
Out[30]: False

In [43]: str = "⑴" # 此处的括号并不好键入~_~
In [44]: str.isdigit()
Out[44]: True

In [45]: str = "\u00b2" # Unicode方式
In [46]: str.isdigit()
Out[46]: True
6. isnumeric()
In [47]: str = "20180402" 
In [48]: str.isnumeric()
Out[48]: True

In [49]: str = "20180402二" # 包含数字、中文数字
In [50]: str.isnumeric()
Out[50]: True

In [51]: str = "20180402叁" # 包含数字、大写数字
In [52]: str.isnumeric()
Out[52]: True

In [53]: str = "20180402si" # 包含数字、字符串
In [54]: str.isnumeric()
Out[54]: False
7. istitle()
In [55]: str = "Hello Aiyayao" # 每个单词首字母大写,其余字母为小写的字符串
In [56]: str.istitle()
Out[56]: True

In [57]: str = "Hello aiyayao" # 非全部单词首字母大写的字符串
In [58]: str.istitle()
Out[58]: False

In [59]: str = "HELLO AIYAYAO" # 所有字母全部大写的字符串
In [60]: str.istitle()
Out[60]: False
 8. islower()
In [63]: str = "hello aiyayao"
In [64]: str.islower()
Out[64]: True

In [65]: str = "helloAiyayao" # 包含大写字母、小写字母
In [66]: str.islower()
Out[66]: False
9. isupper()
In [67]: str = "AIYAYAO"
In [68]: str.isupper()
Out[68]: True

In [69]: str = "hiAIYAYAO"
In [70]: str.isupper()
Out[70]: False

二、查找和替换-7

方法 说明
string.startswith(str) 如果string以str开头返回True,否则返回False
string.endswith(str) 如果string以str开头返回True,否则返回False
string.find(str,start,end) 如果string中从start到end(不包括end)范围内包含str返回检测到的字母的第一个索引值,否则返回-1,检索顺序为从左到右
string.rfind(str,start,end) 方法同find(),检索顺序为从右到左
string.index(str, start,end) 方法同find(),区别是该方法查找不到会报错
string.rindex(str, start,end) 方法同index(),检索顺序为从右到左
string.replace(old_str, new_str, num) 将string字符串中的old_str替换为new_str,num为替换次数,缺省num默认替换所有
 1. startwith(str)
In [71]: str = "aiyayao.com"
In [72]: str.startswith(aiyayao)
Out[73]: True

In [74]: str.startswith("com")
Out[74]: False
2. endswith(str)
In [75]: str.endswith("com") # 仍使用上一个字符串
Out[75]: True

In [76]: str.endswith("aiyayao")
Out[76]: False
3. find(str,start,end)
In [77]: str = "aiyayao.com-rj.aiyayao@gmail.com"
In [85]: str.find("com", 0, 10) 
Out[85]: -1

In [86]: str.find("com", 0, 11)
Out[86]: 8

In [87]: str.find("com", 8, 11) # 直接定位到第一个com所在范围
Out[87]: 8

In [88]: str.find("com",0)  # 缺省第二个参数end,默认为字符串str的长度
Out[88]: 8
4. rfind(str,start,end)
In [89]: str.rfind("com", 0, 11) # 使用的还是上一个字符串
Out[89]: 8

In [90]: str.rfind("com", 0)
Out[90]: 29
 5. index(str,start,end)
In [93]: str.index("com", 0, 10)
ValueError Traceback (most recent call last)
 in ()
----> 1 str.index("com",0,10)
ValueError: substring not found
In [94]: str.index("com",0)
Out[94]: 8
6. rindex(str,start,end)
In [95]: str.rindex("com", 0)
Out[95]: 29

In [96]: str.rindex("com", 0, 10)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
 in ()
----> 1 str.rindex("com", 0, 10)
ValueError: substring not found
 7. replace(old_str, new_str, num)
In [97]: str.replace("aiyayao", "ayy")
Out[97]: 'ayy.com-rj.ayy@gmail.com'

In [100]: str.replace("aiyayao", "ayy", 1) # 仅替换一次
Out[100]: 'ayy.com-rj.aiyayao@gmail.com'

三、大小写转换-5

方法 说明
string.capitalize() 将string中第一个字符转换成大写
string.title() 将string每个单词的首字母转换成大写
string.lower() 将string中所有字母转换成小写
string.upper() 将string中所有字母转换成大写
string.swapcase() sstring中大小写字母互相转换
 1. capitalize()
In [102]: str = "hello aiyayao"
In [103]: str.capitalize()
Out[103]: 'Hello aiyayao'
2. title()
In [104]: str.title()
Out[104]: 'Hello Aiyayao'
3. lower()
In [105]: str.lower()
Out[105]: 'hello aiyayao'
4. upper()
In [106]: str.upper()
Out[106]: 'HELLO AIYAYAO'
5. swapcase()
In [107]: str = "Hello Aiyayao"
In [108]: str.swapcase()
Out[108]: 'hELLO aIYAYAO'

四、文本对齐-3

方法 说明
string.ljust(with) 返回左对齐的字符串,string长度不足with用空格填充
string.rjust(width) 返回右对齐的字符串,string长度不足with用空格填充
string.center(width) 将string中所有字母转换成小写
 1. ljust(with)
In [110]: str = "aiyayao"
In [111]: str.ljust(15)
Out[111]: 'aiyayao        '
2. rjust(with)
In [112]: str.rjust(15)
Out[112]: '        aiyayao'
3. center(with)
In [113]: str.center(15)
Out[113]: '    aiyayao    '

五、去除空白字符-3

方法 说明
string.lstrip() 去除string左侧的空白字符
string.rstrip() 去除string右侧的空白字符
string.strip() 去除string两侧的空白字符
 1. lstrip()
In [114]: str
Out[114]: 'aiyayao'
In [115]: str = str.center(15)
In [116]: str
Out[116]: '    aiyayao    '

In [118]: str.lstrip()
Out[118]: 'aiyayao    '
2. rstrip()
In [119]: str.rstrip()
Out[119]: '    aiyayao'
3.strip()
In [120]: str.strip()
Out[120]: 'aiyayao'

六、拆分和连接-5

方法 说明
string.partition(str) 根据str对string进行分割,返回(str之前所有字符,str,str之后所有字符)
string.rpartition(str) 同partition方法,检索方式为从右到左
string.split(str, num) 根据str对string进行分割,num为分割次数,返回分割后的数组
string.splitlines() 根据换行符(”\r”,”\n”,”\r\n”)进行分割,返回分割后的数组
string.join(seq) 通过string将seq连接成字符串
 1. partition(str)
In [121]: str = "aiyayao.com"
In [122]: str.partition(".")
Out[122]: ('aiyayao', '.', 'com')
2. rpartition(str)
In [123]: str.rpartition(".")
Out[123]: ('aiyayao', '.', 'com')
3. split(str, num)
In [124]: str = "hello \naiyayao"
In [125]: str.split( )
Out[125]: ['hello', 'aiyayao']

In [126]: str.split(" ",1)
Out[126]: ['hello', '\naiyayao']
4. splitlines()
In [134]: str.splitlines()
Out[134]: ['hello ', 'aiyayao']
5. join(seq)
In [135]: str = "."
In [136]: seq = ("hello","aiyayao")
In [137]: str.join(seq)
Out[137]: 'hello.aiyayao'
 方法虽多,但从另一方面能体现出python强大的数据处理能力,更有利于程序的开发。初入python,希望能掌握好这把利器!

上一篇

发表评论

电子邮件地址不会被公开。 必填项已用*标注