Python 字符串处理函数(一)



文章目录

  • Python 字符串处理函数(一)
  • 一、分割字符串
  • (1)使用内置模块string 中的函数split()
  • (2)使用内置模块re中的函数 split()
  • 二、字符串开头和结尾处理
  • (1)函数 startswith()
  • (2)函数endswith()
  • 三、实现字符串匹配处理
  • (1)函数fnmatch()
  • (2)函数fnmatchcase()



  在 Python的内置模块中提供了大量的处理字符串函数,通过这些函数可以帮助开发者快速处理字符串。在本篇的内容中,将详细讲解 Python字符串处理函数的知识。


一、分割字符串

  分割字符串是指按照某个参照物或标识来分割字符串的内容,例如有一个字符串‘aa,bb,cc,123”,我们可以根据逗号进行分割,分割后可以分别得到子串“aa"、“bb”、“cc”、“123”
  

(1)使用内置模块string 中的函数split()

  在内置模块string 中,函数split()的功能是通过指定的分隔对字符串进行切片,如果参数num有指定值,则只分隔num个子字符串。使用函数split()的语法格式如下所示:

str.split(str = " ",num = string .count (stc));

 ●参数str: 是一个分隔符,默认为所有的空字符,包括空格、换行“\n”、制表符“\t”等。
 ●参数num: 分割次数。
  在下面的实例中,使用函数split()分割了指定的字符串:

str= "this is string example....wOw!!!"
print(str.split( ))
print(str.split('i',1))
print(str.split('i',2))
print (str.split('w'))

  在上述代码中,分别四次调用内置函数str.split( )对字符串“str”进行了分割,执行后输出:

python 截取 字符串 数字 python截取字符串函数_分割字符串

(2)使用内置模块re中的函数 split()

  在内置模块re中,函数 split()的功能是进行字符串分割操作。其语法格式如下所示:

re.split(pattern, string[, maxsplit])

  上述语法格式的功能是按照能够匹配的子字符串将 string分割,然后返回分割列表。参数maxsplit 用于指定最大的分割次数,不指定将全部分割。
  例如在下面的实例文件中,演示了使用函数re.split()分割指定字符串的过程:

import re
line = 'asdf fjdk; afed, fjek,asdf,    foo'
#根据空格、短号和分号进行拆分
parts = re.split(r'[;,\s]\s*', line)
print (parts)
#根据捕获组进行拆分
fields = re.split(r'((;|,|\s)\s*', line)
print (fields)

  第四行使用的分隔符是逗号、分号或者是空格符,后面可跟着任意数量的额外空格。

  第七行根据捕获组进行分割,在使用re.split()时需要注意正则表达式模式中的捕获组是否包含在括号内。如果用到捕获组,那么匹配的文本也会包含在最终的结果中。执行后会输出:

python 截取 字符串 数字 python截取字符串函数_分割字符串_02

二、字符串开头和结尾处理

  在计算机编程应用中,经常需要对某个字符串的结尾或开头进行处理,例如删除开头或结尾的空格,下划线等特殊字符。在下面的内容中,将详细讲解在Python中实现字符串开头和结尾处理的知识。

(1)函数 startswith()

  在内置模块string中,函数startswith()的功能是检查字符串是否是以指定的子字符串开头,如果是则返回True否则返回False。如果参数beg 和end指定了具体的值,则会在指定的范围内进行检查。使用函数startswith()的语法格式如下所示:

str.startswingith(str,beg=0,end=len (string));

 ●参数str: 要检测的字符串;
 ●参数strbeg: 可选参数。用于设置字符串检测的起始位置:
 ●参数strend: 可选参数,用于设置字符串检测的结束位置。

(2)函数endswith()

  在内置模块sring中,函数endswith()的功能是判断字符事是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False。其中的可选参数"start”与“end"分别表示检索字符串的开始与结束位置,使用函数endswith()的语法格式如下所示:

str.endswith(suffix[,start[,end]])

 ●参数suffix: 可以是一个字符串或者是一个元素;
 ●参数start: 字符串中的开始始位置;
 ●参数end: 字符中的结束位置:

  在下面的实例文件中,分别使用函数startswith()和endswith()对指定的字符串进行处理。

str = "this is string example....wOw!!!"
print (str.startswith ('this'))
print (str.startswith ('string',8))
print (str.startswith ('this',2,4))
suffix = 'run'
print (str.endswith ('suffix '))
print (str.endswith ('suffix ',0,20))

  由此可见,函数startswith()和endswith()提供了一种非常方便的方式,对字符串的前和后缀实现了基本的检查。执行后会输出:

python 截取 字符串 数字 python截取字符串函数_Python_03

三、实现字符串匹配处理

  在计算机编程应用中,经常需要对某个字符串进行匹配处理,例如提取字符串中的数字、大写字母知识。特殊符号等。在下面的内容中,将详细讲解在Python中实现字符串匹配处理的知

(1)函数fnmatch()

  在内置模块fnmatch中,函数fnmatch()的功能是采用大小写区分规则和底层文件相同(根据操作系统而区别)的模式进行匹配。其语法格式如下所示:

fnmatch. fnmatch(name, pattern)

  上述语法格式的功能是测试name是否匹配pattern, 是则返回true,否则返回falses

(2)函数fnmatchcase()

  在内置模块fnmatch中,函数fnmatchcase()的功能是根据所提供的大小写进行匹配法和上面的函数fnmatch()类似。
  函数fnmatch()和fnmatchcase()的匹配样式是UnixShell风格的,其中“ * ”表示匹配任何单个或多个字符,“?"表示匹配单个字符,[!seq] 表示匹配单个不是seq中的字符,
  在下面的实例中,演示了分别使用函数fnmatch()和fnmatchcase()实现字符串匹配的过程:

from fnmatch import fnmatchcase as match
import fnmatch
#匹配以.PY结尾的字符串
print(fnmatch.fnmatch('py','.py'))
print(fnmatch.fnmatch('tlie.py','*.py'))
#0n Windows
print(fnmatch.fnmatch('123,txt','*.TXT'))
print(fnmatch.fnmatchcase('123,txt','*.TXT'))
addresses = [
'5000 A AAA FF',
'1000 B BBB',
'1000 C CCC',
'2000 D DDD NN',
'4234 E EEE NN',
]
a = [addr for addr in addresses if match(addr, '* FF')]
print(a)
b = [addr for addr in addresses if match(addr, '42[0-9][0-9] *NN*')]
print(b)

  首先演示了函数fnmatch()的基本用法,可以匹配以.py结尾的字符串,用法和函数fnmatchcase()相似。

  接着演示了函数fnmatch()的匹配模式所采用的大小写区分规则和底层文件系统相同(根据操作系统的不同而有所不同)。

  然后使用函数fnmatchcase()可以根据提供的大小写方式进行匹配。

  然后演示了在处理非文件名式的字符串时的作用,定义了保存一组联系地址的列表adresses。

  最后使用match()进行推导。

  由此可见,fnmatch 所实现的匹配操作介乎于简单的字符串方法和正则表达式之间,如果只想在处理数据时提供种简单的机制以允许使用通配符,那么通常这都是合理的解决方案。本实例执行后会输出:

python 截取 字符串 数字 python截取字符串函数_python_04