一、前言
本文将介绍字符串常用方法,包括:find()、rfind()、index()、rindex()、count()、replace()等。
二、正则表达式与Python中的实现
1.字符串构造
2. 字符串截取
【自然语言处理】NLP入门(一):1、正则表达式与Python中的实现(1):字符串构造、字符串截取
3. 字符串格式化输出
【自然语言处理】NLP入门(二):1、正则表达式与Python中的实现(2):字符串格式化输出(%、format()、f-string)
4.字符转义符
【自然语言处理】NLP入门(三):1、正则表达式与Python中的实现(3):字符转义符
5. 字符串常用函数
在Python中有很多内置函数可以对字符串进行操作。如len()
、ord()
、chr()
、max()
、min()
、bin()
、oct()
、hex()
等。
自然语言处理】NLP入门(四):1、正则表达式与Python中的实现(4):字符串常用函数
函数与方法之比较
在Python中,函数(function)和方法(method)都是可调用的对象,但它们之间有一些区别:
- 函数(Function)
- 函数是一段可重复使用的代码块,它可以接受输入参数,并且在执行完任务后返回一个结果。
- 函数可以独立存在,不依赖于任何对象或类。
- 在Python中,函数可以通过
def
关键字定义,并可以在任何地方调用。
def greet(name):
return f"Hello, {name}!"
print(greet("Alice")) # Output: Hello, Alice!
- 方法(Method)
- 方法是与特定对象相关联的函数。它是在类定义中定义的函数,它可以访问对象的数据。
- 方法需要通过对象来调用,并且在方法内部可以使用
self
关键字来访问对象的属性和其他方法。 - 在Python中,方法是通过将函数绑定到类的属性来创建的,并且可以通过类的实例来调用。
class Dog:
def __init__(self, name):
self.name = name
def bark(self):
return f"{self.name} says Woof!"
my_dog = Dog("Buddy")
print(my_dog.bark()) # Output: Buddy says Woof!
函数是独立的代码块,而方法是与类或对象相关联的函数。 方法依赖于类和对象的概念,而函数则是更一般的概念,不一定与特定的类或对象相关联。
6. 字符串常用方法
由于字符串属于不可变序列类型,常用方法中涉及到返回字符串的都是新字符串,原有字符串对象不变。
1. 对齐方式
Python提供了三种方法来对字符串进行对齐:center()
, ljust()
和 rjust()
。
2. 大小写转换
- 常用于解决不区分大小写的问题:
lower()
将字符串中的大写字母转换为小写字母,其他字符不变,并返回新字符串。upper()
将字符串中的小写字母转换为大写字母,其他字符不变,并返回新字符串。
- 进阶
capitalize()
将字符串的首字母转换为大写,其余字母转为小写,返回新字符串。title()
将每个单词的首字母转为大写,其他字母转为小写,返回新字符串。swapcase()
将字符串中的大小写字母互换,返回新字符串。
【自然语言处理】NLP入门(五):1、正则表达式与Python中的实现(5):字符串常用方法:对齐方式、大小写转换详解
3. find()和rfind()
格式
- str.find(sub[, start, end])
- str.rfind(sub[, start, end])
参数说明
- sub: 要查找的子串
- start: 查找的开始位置索引,默认为0
- end: 查找的结束位置索引(不包含该位置),默认为字符串长度
功能
- 在字符串中查找子串sub首次出现的位置索引
- find()从左往右查找,rfind()从右往左查找
- 如果找到子串,返回其首次出现位置的索引
- 如果没有找到,返回-1
示例
代码语言:javascript复制s = 'Heart is living in tomorrow'
print(s.find('Heart')) # 输出: 0
print(s.find('is')) # 输出: 6
print(s.find('heart')) # 输出: -1 (不存在)
print(s.find('i')) # 输出: 6 (找到第一个'i')
print(s.find('i', 7)) # 输出: 10 (从索引7开始查找)
print(s.find('i', 11)) # 输出: 12
print(s.find('i', 13)) # 输出: 16
print(s.find('i', 17)) # 输出: -1 (从17到结尾没有'i')
print(s.rfind('i')) # 输出: 16 (找到最后一个'i')
4. index()和rindex()
index()和rindex()方法与find()和rfind()类似,不同之处在于如果没有找到子串,会抛出ValueError异常,而不是返回-1。一般使用find()更加安全和方便。
5. count()
格式
- str.count(sub[, start, end])
参数说明
- sub: 要统计的子串
- start: 统计的开始位置索引,默认为0
- end: 统计的结束位置索引(不包含该位置),默认为字符串长度
功能
- 统计字符串中指定子串出现的次数
示例
代码语言:javascript复制s = 'Hello, hello, HELLO'
print(s.count('hello')) # 输出: 1
print(s.count('Hello')) # 输出: 1
print(s.count('ll', 4)) # 输出: 1 (从索引4开始统计)
print(s.count('ll')) # 输出: 2
6. replace()
格式
- str.replace(old, new, count)
参数说明
- old: 将要被替换的子串
- new: 用于替换的新子串
- count: 替换的最大次数,默认为替换所有的匹配项
功能
- 将字符串中的old子串替换为new子串,并返回新的字符串
- 替换次数最多为count指定的值,默认替换全部
示例
代码语言:javascript复制s = 'Heart is living in tomorrow'
print(s.replace('i', 'I')) # 输出: Heart Is lIvIng In tomorrow
print(s) # 输出: Heart is living in tomorrow (原字符串不变)
代码语言:javascript复制s1 = '中国北京,北京地铁,地铁沿线,沿线城市'
print(s1.replace('北京', 'Beijing')) # 输出: 中国Beijing,Beijing地铁,地铁沿线,沿线城市
print(s1.replace('北上', 'Beijing')) # 输出: 中国北京,北京地铁,地铁沿线,沿线城市 (没有'北上'子串)
print(s1.replace('北京', 'Beijing', 1)) # 输出: 中国Beijing,北京地铁,地铁沿线,沿线城市 (替换1次)