Python 常用内置函数全解-字符串处理函数

1. 基础字符串操作

1.1 len():获取字符串长度

len() 函数用于获取字符串的长度,即字符串中字符的数量。它是一个内置函数,可以直接对字符串进行操作,返回一个整数,表示字符串的长度。

  • 例如:

    s = "Hello, World!"
    length = len(s)
    print(length)  # 输出:13
    

    在这个例子中,字符串 "Hello, World!" 包含 13 个字符,包括字母、标点符号和空格,len() 函数正确地返回了字符串的长度。

  • 应用场景:

    • 在处理用户输入时,可以通过 len() 函数检查输入的长度是否符合要求。例如,限制用户名的长度在 5 到 15 个字符之间。
    • 在文本处理中,可以根据字符串长度进行分段或截取操作。

1.2 str():将其他类型转换为字符串

str() 函数用于将其他类型(如整数、浮点数、列表等)转换为字符串。它是一个非常实用的函数,可以将不同类型的数据转换为字符串格式,方便进行字符串拼接或其他字符串操作。

  • 例如:

    num = 123
    float_num = 45.67
    lst = [1, 2, 3]
    str_num = str(num)
    str_float = str(float_num)
    str_lst = str(lst)
    print(str_num)    # 输出:'123'
    print(str_float)  # 输出:'45.67'
    print(str_lst)    # 输出:'[1, 2, 3]'
    

    在这个例子中,str() 函数将整数 123、浮点数 45.67 和列表 [1, 2, 3] 分别转换为字符串 '123''45.67''[1, 2, 3]'

  • 应用场景:

    • 在日志记录中,将变量的值转换为字符串格式,方便记录和输出。
    • 在生成报告或文本内容时,将不同类型的数据统一转换为字符串,进行拼接和格式化。

影刀RPA办公自动化入门到实战

2. 字符串查找与替换

2.1 find():查找子字符串位置

find() 方法用于查找子字符串在主字符串中的位置。它返回子字符串首次出现的索引值,如果没有找到则返回 -1

  • 例如:

    s = "Hello, World!"
    position = s.find("World")
    print(position)  # 输出:7
    

    在这个例子中,子字符串 "World" 在主字符串 "Hello, World!" 中首次出现的位置是索引 7

  • 应用场景:

    • 在文本处理中,可以通过 find() 方法查找特定关键词的位置,从而进行进一步的文本分析或处理。
    • 在解析字符串时,可以根据特定标记的位置来提取或分割字符串。

2.2 replace():替换子字符串

replace() 方法用于将字符串中的某些子字符串替换为新的子字符串。它返回一个新的字符串,原字符串保持不变。

  • 例如:

    s = "Hello, World!"
    new_s = s.replace("World", "Python")
    print(new_s)  # 输出:Hello, Python!
    

    在这个例子中,将主字符串 "Hello, World!" 中的子字符串 "World" 替换为 "Python",生成了新的字符串 "Hello, Python!"

  • 应用场景:

    • 在文本编辑中,可以使用 replace() 方法批量替换文本中的特定词汇或短语。
    • 在数据清洗过程中,可以将错误的数据或格式替换为正确的值。

3. 字符串分割与连接

3.1 split():按分隔符分割字符串

split() 方法用于将字符串按照指定的分隔符进行分割,并返回一个包含分割结果的列表。如果没有指定分隔符,默认使用空白字符(如空格、换行符等)作为分隔符。

  • 例如:

    s = "Hello, World! Welcome to Python."
    words = s.split()
    print(words)  # 输出:['Hello,', 'World!', 'Welcome', 'to', 'Python.']
    

    在这个例子中,字符串 "Hello, World! Welcome to Python." 被按照默认的空白字符分割成多个单词,结果是一个包含这些单词的列表。

  • 例如:

    s = "apple,banana,cherry"
    fruits = s.split(",")
    print(fruits)  # 输出:['apple', 'banana', 'cherry']
    

    在这个例子中,字符串 "apple,banana,cherry" 被按照逗号 , 分割成多个元素,结果是一个包含这些元素的列表。

  • 应用场景:

    • 在处理文本数据时,可以使用 split() 方法将句子分割成单词,方便进行词频统计或文本分析。
    • 在解析 CSV 文件时,可以使用 split(",") 将每一行数据按逗号分割,提取出各个字段的值。

3.2 join():用指定字符连接字符串列表

join() 方法用于将字符串列表中的元素用指定的字符连接成一个新的字符串。该方法需要一个字符串列表作为输入,并返回一个连接后的字符串。

  • 例如:

    words = ["Hello", "World", "Python"]
    sentence = " ".join(words)
    print(sentence)  # 输出:Hello World Python
    

    在这个例子中,字符串列表 ["Hello", "World", "Python"] 被用空格 " " 连接成一个新的字符串 "Hello World Python"

  • 例如:

    fruits = ["apple", "banana", "cherry"]
    fruit_string = ",".join(fruits)
    print(fruit_string)  # 输出:apple,banana,cherry
    

    在这个例子中,字符串列表 ["apple", "banana", "cherry"] 被用逗号 "," 连接成一个新的字符串 "apple,banana,cherry"

  • 应用场景:

    • 在生成报告或文本内容时,可以使用 join() 方法将多个单词或短语连接成完整的句子。
    • 在处理数据时,可以将多个字段的值用特定的分隔符连接成一个字符串,方便存储或传输。

4. 字符串大小写转换

4.1 upper():转换为大写

upper() 方法用于将字符串中的所有小写字母转换为大写字母。它返回一个新的字符串,原字符串保持不变。

  • 例如:

    s = "Hello, World!"
    upper_s = s.upper()
    print(upper_s)  # 输出:HELLO, WORLD!
    

    在这个例子中,字符串 "Hello, World!" 中的小写字母被全部转换为大写字母,生成了新的字符串 "HELLO, WORLD!"

  • 应用场景:

    • 在处理用户输入时,可以将所有输入统一转换为大写,以便进行不区分大小写的比较或处理。例如,在验证用户名或密码时,可以将输入转换为大写后再进行匹配。
    • 在生成报告或文本内容时,可以将标题或重要信息转换为大写,以突出显示。

4.2 lower():转换为小写

lower() 方法用于将字符串中的所有大写字母转换为小写字母。它返回一个新的字符串,原字符串保持不变。

  • 例如:

    s = "Hello, World!"
    lower_s = s.lower()
    print(lower_s)  # 输出:hello, world!
    

    在这个例子中,字符串 "Hello, World!" 中的大写字母被全部转换为小写字母,生成了新的字符串 "hello, world!"

  • 应用场景:

    • 在文本处理中,可以将文本统一转换为小写,以便进行统一的文本分析或处理。例如,在进行词频统计时,可以将所有单词转换为小写,避免大小写差异导致的统计错误。
    • 在处理文件名或路径时,可以将所有字符转换为小写,以确保路径的一致性。

4.3 capitalize():首字母大写

capitalize() 方法用于将字符串的第一个字母转换为大写,其余字母转换为小写。它返回一个新的字符串,原字符串保持不变。

  • 例如:

    s = "hello, world!"
    capitalize_s = s.capitalize()
    print(capitalize_s)  # 输出:Hello, world!
    

    在这个例子中,字符串 "hello, world!" 的第一个字母被转换为大写,其余字母保持小写,生成了新的字符串 "Hello, world!"

  • 应用场景:

    • 在生成标题或句子时,可以使用 capitalize() 方法将首字母大写,符合语言规范。
    • 在处理用户输入的文本时,可以将首字母大写,以提升文本的可读性和规范性。

5. 字符串格式化

5.1 format():格式化字符串

format() 方法用于格式化字符串,它通过占位符和参数来生成格式化的字符串。这种方式灵活且功能强大,可以指定数据的显示格式,如对齐方式、填充字符、小数点精度等。

  • 例如:

    name = "Alice"
    age = 25
    info = "Name: {}, Age: {}".format(name, age)
    print(info)  # 输出:Name: Alice, Age: 25
    

    在这个例子中,{} 是占位符,format() 方法将 nameage 的值分别填充到占位符的位置,生成了格式化的字符串。

  • 例如:

    pi = 3.1415926
    formatted_pi = "The value of pi is {:.2f}".format(pi)
    print(formatted_pi)  # 输出:The value of pi is 3.14
    

    在这个例子中,{:.2f} 指定了小数点后保留两位数字,format() 方法将 pi 的值格式化为保留两位小数的字符串。

  • 应用场景:

    • 在生成报告或文本内容时,可以使用 format() 方法将数据格式化为特定的格式,如日期、货币等。
    • 在处理用户输入时,可以将输入的数据格式化为符合要求的格式,如电话号码、身份证号等。

5.2 f-string:Python 3.6+的格式化方式

f-string 是 Python 3.6 引入的一种新的字符串格式化方法,它通过在字符串前加 fF,并在字符串中直接嵌入变量或表达式来实现格式化。这种方式简洁且高效,是目前推荐的字符串格式化方式。

  • 例如:

    name = "Alice"
    age = 25
    info = f"Name: {name}, Age: {age}"
    print(info)  # 输出:Name: Alice, Age: 25
    

    在这个例子中,f"Name: {name}, Age: {age}" 直接将变量 nameage 的值嵌入到字符串中,生成了格式化的字符串。

  • 例如:

    pi = 3.1415926
    formatted_pi = f"The value of pi is {pi:.2f}"
    print(formatted_pi)  # 输出:The value of pi is 3.14
    

    在这个例子中,{pi:.2f} 指定了小数点后保留两位数字,f-string 将 pi 的值格式化为保留两位小数的字符串。

  • 应用场景:

    • 在生成动态文本时,f-string 可以直接嵌入变量和表达式,使代码更加简洁易读。
    • 在处理复杂数据时,f-string 可以方便地将数据格式化为所需的格式,提高代码的可维护性。

6. 字符串去空格

6.1 strip():去除首尾空格

strip() 方法用于去除字符串首尾的空白字符,包括空格、制表符、换行符等。它返回一个新的字符串,原字符串保持不变。

  • 例如:

    s = "   Hello, World!   "
    stripped_s = s.strip()
    print(stripped_s)  # 输出:Hello, World!
    

    在这个例子中,字符串 " Hello, World! " 首尾的空格被去除,生成了新的字符串 "Hello, World!"

  • 应用场景:

    • 在处理用户输入时,经常需要去除输入字符串首尾的多余空格,以确保数据的准确性。例如,用户在输入表单时可能会不小心在文本前后添加空格。
    • 在读取文件内容时,文件中的某些行可能包含首尾空格,使用 strip() 方法可以去除这些空格,方便后续处理。

6.2 lstrip():去除左侧空格

lstrip() 方法用于去除字符串左侧的空白字符。它返回一个新的字符串,原字符串保持不变。

  • 例如:

    s = "   Hello, World!"
    lstripped_s = s.lstrip()
    print(lstripped_s)  # 输出:Hello, World!
    

    在这个例子中,字符串 " Hello, World!" 左侧的空格被去除,生成了新的字符串 "Hello, World!"

  • 应用场景:

    • 在处理文本数据时,如果需要对文本进行左对齐处理,可以使用 lstrip() 方法去除左侧的空格。
    • 在解析某些特定格式的文本时,可能需要去除左侧的空格以便更好地提取有用信息。

6.3 rstrip():去除右侧空格

rstrip() 方法用于去除字符串右侧的空白字符。它返回一个新的字符串,原字符串保持不变。

  • 例如:

    s = "Hello, World!   "
    rstripped_s = s.rstrip()
    print(rstripped_s)  # 输出:Hello, World!
    

    在这个例子中,字符串 "Hello, World! " 右侧的空格被去除,生成了新的字符串 "Hello, World!"

  • 应用场景:

    • 在生成文本文件时,为了避免文件末尾出现多余的空格,可以使用 rstrip() 方法去除右侧的空格。
    • 在处理表格数据时,某些单元格内容可能包含右侧的空格,使用 rstrip() 方法可以去除这些空格,确保数据的一致性。

7. 字符串判断

7.1 isalnum():是否为字母或数字

isalnum() 方法用于判断字符串是否只包含字母和数字字符。如果字符串中所有字符都是字母或数字,并且至少有一个字符,则返回 True;否则返回 False

  • 例如:

    s1 = "abc123"
    s2 = "abc!123"
    print(s1.isalnum())  # 输出:True
    print(s2.isalnum())  # 输出:False
    

    在这个例子中,s1 只包含字母和数字,因此 isalnum() 返回 True;而 s2 包含了标点符号 !,因此返回 False

  • 应用场景:

    • 在验证用户输入时,可以使用 isalnum() 判断输入是否只包含字母和数字,例如用户名或密码的验证。
    • 在处理文本数据时,可以用来筛选出只包含字母和数字的单词或字符串,便于后续处理。

7.2 isalpha():是否为字母

isalpha() 方法用于判断字符串是否只包含字母字符。如果字符串中所有字符都是字母,并且至少有一个字符,则返回 True;否则返回 False

  • 例如:

    s1 = "HelloWorld"
    s2 = "Hello123"
    print(s1.isalpha())  # 输出:True
    print(s2.isalpha())  # 输出:False
    

    在这个例子中,s1 只包含字母,因此 isalpha() 返回 True;而 s2 包含了数字,因此返回 False

  • 应用场景:

    • 在文本分析中,可以用来筛选出纯字母的单词,例如在词频统计中排除包含数字或符号的单词。
    • 在处理用户输入时,可以验证输入是否只包含字母,例如在输入姓名或地名时。

7.3 isdigit():是否为数字

isdigit() 方法用于判断字符串是否只包含数字字符。如果字符串中所有字符都是数字,并且至少有一个字符,则返回 True;否则返回 False

  • 例如:

    s1 = "12345"
    s2 = "123abc"
    print(s1.isdigit())  # 输出:True
    print(s2.isdigit())  # 输出:False
    

    在这个例子中,s1 只包含数字,因此 isdigit() 返回 True;而 s2 包含了字母,因此返回 False

  • 应用场景:

    • 在数据处理中,可以用来验证字符串是否为纯数字,例如在处理电话号码、身份证号码等输入时。
    • 在文本解析中,可以用来提取数字字符串,例如在日志文件中提取时间戳或编号等信息。

8. 最后

Python 处理字符串时需要注意的细节:

影刀RPA办公自动化入门到实战

8.1 编码问题

  • 背景 :Python 2.x 默认使用 ASCII 编码,而 Python 3.x 默认使用 UTF-8 编码。如果处理的字符串包含非 ASCII 字符(如中文、日文等),可能会出现编码错误。
  • 示例 :在 Python 2.x 中,如果直接将中文字符串赋值给变量,可能会报错。例如:
# Python 2.x 中的错误示例
s = "你好"

这会报 SyntaxError: Non-ASCII character 错误。解决方法是在文件开头添加声明,指定文件的编码方式,如 # -*- coding: utf-8 -*-

  • 注意事项 :在 Python 3.x 中,虽然默认使用 UTF-8 编码,但在处理文件读写等操作时,仍需注意文件本身的编码格式是否与程序中的编码一致。如果文件是其他编码(如 GBK),需要在读取文件时指定正确的编码,否则可能会出现乱码。例如:
with open("file.txt", "r", encoding="gbk") as f:
    content = f.read()

8.2 字符串不可变性

  • 背景 :在 Python 中,字符串是不可变的数据类型。这意味着一旦创建了一个字符串,就不能修改它的内容。每次对字符串进行修改操作时,实际上都是创建了一个新的字符串。
  • 示例
s = "hello"
s[0] = "H"  # 会报错,TypeError: 'str' object does not support item assignment

如果想修改字符串,可以通过拼接等操作创建一个新的字符串。例如:

s = "hello"
s = "H" + s[1:]
print(s)  # 输出:Hello
  • 注意事项 :由于字符串不可变,在处理大量字符串拼接操作时,要注意性能问题。频繁地拼接字符串会导致多次创建新的字符串对象,增加内存消耗和时间开销。可以使用 join() 方法或 io.StringIO 等方式来优化。例如:
# 使用 join() 方法
words = ["hello", "world", "python"]
sentence = " ".join(words)
print(sentence)  # 输出:hello world python

# 使用 io.StringIO
import io
s = io.StringIO()
s.write("hello")
s.write(" ")
s.write("world")
s.write(" ")
s.write("python")
sentence = s.getvalue()
print(sentence)  # 输出:hello world python

8.3 空字符串和 None 的区别

  • 背景 :空字符串 ""None 是两个不同的概念。空字符串是一个长度为 0 的字符串,而 None 表示没有值。
  • 示例
s1 = ""
s2 = None

print(len(s1))  # 输出:0
print(len(s2))  # 会报错,TypeError: object of type 'NoneType' has no len()
  • 注意事项 :在处理字符串时,要注意区分空字符串和 None。例如,在函数中接收字符串参数时,如果参数可能为 None,需要进行检查,避免直接对 None 进行字符串操作。例如:
def process_string(s):
    if s is None:
        return "No input"
    return s.upper()

print(process_string("hello"))  # 输出:HELLO
print(process_string(None))  # 输出:No input

8.4 字符串比较

  • 背景 :在 Python 中,字符串比较是按照字典序进行的,即根据字符的 Unicode 码值进行比较。
  • 示例
s1 = "apple"
s2 = "banana"
print(s1 < s2)  # 输出:True
print(s1 == s2)  # 输出:False
  • 注意事项 :如果需要比较字符串是否相等,可以直接使用 == 运算符。但如果需要忽略大小写比较,可以先将字符串转换为统一的大小写,再进行比较。例如:
s1 = "Apple"
s2 = "apple"
print(s1.lower() == s2.lower())  # 输出:True

8.5 字符串格式化

  • 背景 :Python 提供了多种字符串格式化的方法,如 % 格式化、str.format() 方法和 f-string(Python 3.6+)。
  • 示例
# % 格式化
name = "Alice"
age = 25
print("My name is %s, and I am %d years old." % (name, age))

# str.format() 方法
print("My name is {}, and I am {} years old.".format(name, age))

# f-string
print(f"My name is {name}, and I am {age} years old.")
  • 注意事项 :在使用字符串格式化时,要注意占位符的类型和数量与实际传入的参数匹配。例如,%s 用于字符串,%d 用于整数等。如果使用 str.format() 方法或 f-string,要注意变量的顺序和语法。另外,f-string 是 Python 3.6+ 的新特性,在低版本 Python 中无法使用。

8.6 特殊字符的处理

  • 背景 :在字符串中,有些字符具有特殊含义,如转义字符 \、换行符 \n、制表符 \t 等。
  • 示例
s = "Hello\nWorld"
print(s)  # 输出:
# Hello
# World

s = "C:\\Users\\Alice\\Documents"
print(s)  # 输出:C:\Users\Alice\Documents
  • 注意事项 :如果需要在字符串中表示这些特殊字符本身,需要使用转义字符 \ 对它们进行转义。例如,表示一个反斜杠需要写成 \\ 。另外,在处理文件路径等包含特殊字符的字符串时,可以使用原始字符串(在字符串前加 r )来避免转义问题。例如:
s = r"C:\Users\Alice\Documents"
print(s)  # 输出:C:\Users\Alice\Documents

8.7 字符串编码和解码

  • 背景 :在处理网络数据或文件读写时,经常需要对字符串进行编码和解码操作。Python 提供了 encode()decode() 方法来实现字符串与其他编码格式之间的转换。
  • 示例
s = "你好"
encoded = s.encode("utf-8")
print(encoded)  # 输出:b'\xe4\xbd\xa0\xe5\xa5\xbd'

decoded = encoded.decode("utf-8")
print(decoded)  # 输出:你好
  • 注意事项 :在编码和解码时,要确保使用的编码格式一致。如果编码格式不匹配,可能会导致解码错误或乱码。例如,使用 UTF-8 编码的字符串不能用 GBK 解码。

你可能感兴趣的:(Python 常用内置函数全解-字符串处理函数)