【自然语言处理】NLP入门(六):1、正则表达式与Python中的实现(6):字符串常用方法:find()、rfind()、index()、rindex()、count()、replace()

2024-07-30 12:35:52 浏览数 (1)

一、前言

  本文将介绍字符串常用方法,包括: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)都是可调用的对象,但它们之间有一些区别:

  1. 函数(Function)
    • 函数是一段可重复使用的代码块,它可以接受输入参数,并且在执行完任务后返回一个结果。
    • 函数可以独立存在,不依赖于任何对象或类。
    • 在Python中,函数可以通过def关键字定义,并可以在任何地方调用。
代码语言:javascript复制
def greet(name):
    return f"Hello, {name}!"

print(greet("Alice"))  # Output: Hello, Alice!
  1. 方法(Method)
    • 方法是与特定对象相关联的函数。它是在类定义中定义的函数,它可以访问对象的数据。
    • 方法需要通过对象来调用,并且在方法内部可以使用self关键字来访问对象的属性和其他方法。
    • 在Python中,方法是通过将函数绑定到类的属性来创建的,并且可以通过类的实例来调用。
代码语言:javascript复制
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次)

0 人点赞