Python基础:字符串(String)详解 您所在的位置:网站首页 php中连接两个字符串的符号 Python基础:字符串(String)详解

Python基础:字符串(String)详解

2024-06-02 15:33| 来源: 网络整理| 查看: 265

在这里插入图片描述

1. 字符串定义

  在Python中,字符串是一种数据类型,用于表示文本数据。字符串是由字符组成的序列,可以包含字母、数字、符号和空格等字符。在Python中,你可以使用单引号(')或双引号(")来定义字符串。   1)使用单引号或双引号创建字符串

str1 = 'Hello, world!' str2 = "Python Programming"

  2) 使用三引号创建多行字符串

multiline_str = '''This is a multi-line string.''' 2.访问字符串中的值

  Python不支持单字符类型,单字符在Python中也是作为一个字符串使用。   Python中使用索引来访问字符串,可以使用方括号[](切片)来截取字符串。字符串是一个字符序列,每个字符都有与之关联的索引。   字符串的截取的语法格式如下:

# 索引值以0为开始值,-1为从末尾的开始位置 变量[头下标:尾下标]

  示例:

# 创建一个字符串 my_string = "Hello, World!" # 访问单个字符 first_char = my_string[0] #获取第一个字符,索引为0 second_char = my_string[1] # 获取第二个字符,索引为1 # 使用负数索引从末尾开始访问字符 last_char = my_string[-1] # 获取最后一个字符 second_last_char = my_string[-2] # 获取倒数第二个字符 # 切片(获取子串) substring = my_string[7:12] # 获取索引7到11的子串,不包括索引12 # 通过切片获取从开始到指定位置的子串 prefix = my_string[:5] # 获取从开头到索引4的子串 # 通过切片获取从指定位置到末尾的子串 suffix = my_string[7:] # 获取从索引7到末尾的子串 # 打印结果 print(first_char) # 输出:H print(last_char) # 输出:! print(substring) # 输出:World print(prefix) # 输出:Hello print(suffix) # 输出:World!

在这里插入图片描述

3. 字符串更新

  在Python中,字符串是不可变(immutable)的,这意味着一旦创建,就不能直接修改字符串的内容,但可以通过创建一个新的字符串来实现修改的效果。

3.1 切片和拼接 # 尝试修改字符串中的某个字符(这会引发错误) # my_string[0] = 'h' # TypeError: 'str' object does not support item assignment # 创建一个新字符串,实现修改的效果 new_string = 'h' + my_string[1:] print(new_string) # 输出:hello, World! # 切片和拼接 my_string = "Python" updated_string = my_string[:4] + "ic" + my_string[5:] print(updated_string) # 输出:Pythonic 3.2 使用str.join()方法 words = ["Hello", "World"] result = " ".join(words) print(result) # 输出:Hello World 3.3 格式化字符串 name = "Alice" age = 30 formatted_str = "My name is {} and I am {} years old.".format(name, age) print(formatted_str) # 输出:My name is Alice and I am 30 years old. 3.4 使用f-字符串(Python3.6版本以上) name = "Bob" age = 25 formatted_str = f"My name is {name} and I am {age} years old." print(formatted_str) # 输出:My name is Bob and I am 25 years old.

  这些方法中的每一个都会创建一个新的字符串,而不是在原始字符串上直接修改。在实际编程中,选择哪种方式取决于具体的项目需求。如果需要频繁修改字符串,可能需要考虑使用列表(list)或其他可变对象。

4. 转义字符

  在Python字符串中,转义字符用于表示一些特殊字符或执行特定的操作。转义字符以反斜杠\ 开始,后面跟着一个或多个字符。 在这里插入图片描述

print('\'Hello, world!\'') # 输出:'Hello, world!' print("Hello, world!\nHow are you?") # 输出:Hello, world! # How are you? print("Hello, world!\tHow are you?") # 输出:Hello, world! How are you? print("Hello,\b world!") # 输出:Hello world! print("Hello,\f world!") # 输出: # Hello, # world! print("A 对应的 ASCII 值为:", ord('A')) # 输出:A 对应的 ASCII 值为: 65 print("\x41 为 A 的 ASCII 代码") # 输出:A 为 A 的 ASCII 代码 decimal_number = 42 binary_number = bin(decimal_number) # 十进制转换为二进制 print('转换为二进制:', binary_number) # 转换为二进制: 0b101010 octal_number = oct(decimal_number) # 十进制转换为八进制 print('转换为八进制:', octal_number) # 转换为八进制: 0o52 hexadecimal_number = hex(decimal_number) # 十进制转换为十六进制 print('转换为十六进制:', hexadecimal_number) # 转换为十六进制: 0x2a

在这里插入图片描述

5. 字符串格式化

  详见前面的博客文章:   Python基础:输入输出详解-输出字符串格式化

6. 字符串内建函数

  Python中提供了很多内置方法,用于字符串的各种操作,包括大小写转换、查找、替换等等,具体使用根据需要选择。

6.1 内置函数列表 方法描述capitalize()返回原字符串的一个副本,将字符串的第一个字符转换为大写,其余字符转换为小写。casefold()返回原字符串的一个副本,将字符串中所有字符转换为小写,并且处理更多的特殊字符,使其更适合进行字符串比较。center(width)返回原字符串的一个副本,居中对齐,使用空格填充至指定的宽度。count(sub[, start[, end]])返回子字符串在字符串中出现的次数。可选参数 start 和 end 指定搜索范围。encode(encoding=‘utf-8’, errors=‘strict’)返回字符串的编码版本。可选参数 encoding 指定编码方式,默认为 ‘utf-8’。endswith(suffix[, start[, end]])检查字符串是否以指定后缀结束,返回 True 或 False。可选参数 start 和 end 指定搜索范围。expandtabs(tabsize=8)返回字符串的副本,其中的制表符(\t)将被空格替代,每个制表符替代为 tabsize 指定的空格数。find(sub[, start[, end]])返回子字符串在字符串中第一次出现的位置,找不到返回 -1。可选参数 start 和 end 指定搜索范围。format(*args, **kwargs)格式化字符串,使用传递的参数替换占位符。format_map(mapping)格式化字符串,使用映射对象中的键值对替换占位符。index(sub[, start[, end]])查找子字符串在字符串中第一次出现的位置,找不到会引发 ValueError。可选参数 start 和 end 指定搜索范围。isalnum()如果字符串至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False。isalpha()如果字符串至少有一个字符并且所有字符都是字母则返回 True,否则返回 Falseisdigit()如果字符串只包含数字则返回 True,否则返回 False。isidentifier()如果字符串是一个合法的Python标识符则返回 True,否则返回 False。islower()如果字符串中至少包含一个区分大小写的字符,并且所有这些(区分大小写)字符都是小写,则返回 True;否则返回 False。isnumeric()如果字符串中的所有字符都是数字字符,则返回 True,否则返回 False。isprintable()如果字符串中的所有字符都是可打印的,则返回 True,否则返回 False。isspace()如果字符串只包含空格则返回 True,否则返回 False。istitle()如果字符串是标题化的(每个单词的第一个字母大写),则返回 True,否则返回 False。isupper()如果字符串中至少包含一个区分大小写的字符,并且所有这些(区分大小写)字符都是大写,则返回 True;否则返回 False。join(iterable)返回一个由可迭代对象中的字符串拼接而成的字符串。ljust(width)返回原字符串的一个副本,左对齐,并使用空格填充至指定长度。lower()返回字符串的一个副本,将所有大写字母转换为小写。lstrip([chars])返回原字符串的一个副本,去除左侧指定字符集合 chars 或空白字符。partition(sep)根据分隔符 sep 将字符串分割成三部分,返回一个包含头部、分隔符和尾部的元组。replace(old, new[, count])返回原字符串的一个副本,将所有出现的子字符串 old 替换为 new。可选参数 count 指定替换次数。rfind(sub[, start[, end]])类似于 find() 方法,但是从右边开始查找。可选参数 start 和 end 指定搜索范围。rindex(sub[, start[, end]])类似于 index() 方法,但是从右边开始查找。可选参数 start 和 end 指定搜索范围。rjust(width)返回原字符串的一个副本,右对齐,并使用空格填充至指定长度。rpartition(sep)根据分隔符 sep 将字符串从右边开始分割成三部分,返回一个包含头部、分隔符和尾部的元组。rstrip([chars])返回原字符串的一个副本,去除右侧指定字符集合 chars 或空白字符。split([sep[, maxsplit]])返回一个由分隔符 sep 拆分原字符串的列表。可选参数 maxsplit 指定拆分次数。splitlines([keepends])返回一个包含字符串中的各行作为元素的列表,可选参数 keepends 指定是否保留换行符。startswith(prefix[, start[, end]])检查字符串是否以指定前缀开头,返回 True 或 False。可选参数 start 和 end 指定搜索范围。strip([chars])返回原字符串的一个副本,去除两侧指定字符集合 chars 或空白字符。swapcase()回原字符串的一个副本,将所有大写字母转换为小写,所有小写字母转换为大写。title()返回原字符串的一个副本,将每个单词的首字母大写。upper()返回字符串的一个副本,将所有小写字母转换为大写。zfill(width)返回原字符串的一个副本,在左侧使用零填充至指定的宽度。 6.2 部分方法示例 6.2.1 capitalize() - 将字符串的第一个字符转换为大写 original_string = "hello world" capitalized_string = original_string.capitalize() """ 将字符串的第一个字符转换为大写。在这个例子中,原始字符串是 "hello world", 经过 capitalize() 处理后,结果字符串是 "Hello world"。 """ print(capitalized_string) 6.2.2 lower() - 将字符串中的所有字符转换为小写 original_string = "Hello World" lowercased_string = original_string.lower() """ 将字符串中的所有字符转换为小写。在这个例子中,原始字符串是 "Hello World", 经过 lower() 处理后,结果字符串是 "hello world"。 """ print(lowercased_string) 6.2.3 upper() - 将字符串中的所有字符转换为大写 original_string = "Hello World" uppercased_string = original_string.upper() """ 将字符串中的所有字符转换为大写。在这个例子中,原始字符串是 "Hello World", 经过 upper() 处理后,结果字符串是 "HELLO WORLD"。 """ print(uppercased_string) 6.2.4 replace() - 替换字符串中的子字符串 original_string = "I like apples" new_string = original_string.replace("apples", "oranges") """ 替换字符串中的子字符串。在这个例子中,原始字符串是 "I like apples", 经过 replace() 处理后,结果字符串是 "I like oranges"。 """ print(new_string) 6.2.5 startswith() - 检查字符串是否以指定前缀开头 original_string = "Hello World" starts_with_hello = original_string.startswith("Hello") """ 检查字符串是否以指定前缀开头。在这个例子中,原始字符串是 "Hello World", 经过 startswith() 处理后,starts_with_hello 的值为 True。 """ print(starts_with_hello) 6.2.6 endswith() - 检查字符串是否以指定后缀结束 original_string = "Hello World" ends_with_world = original_string.endswith("World") """ 检查字符串是否以指定后缀结束。在这个例子中,原始字符串是 "Hello World", 经过 endswith() 处理后,ends_with_world 的值为 True。 """ print(ends_with_world) 6.2.7 split() - 使用指定的分隔符将字符串拆分为子字符串 original_string = "apple,orange,banana" fruits_list = original_string.split(",") """ 使用指定的分隔符将字符串拆分为子字符串。在这个例子中,原始字符串是 "apple,orange,banana", 经过 split() 处理后,fruits_list 的值为 ['apple', 'orange', 'banana']。 """ print(fruits_list) 6.2.8 strip() - 去除字符串两侧的空白字符 original_string = " Hello World " stripped_string = original_string.strip() """ 去除字符串两侧的空白字符。在这个例子中,原始字符串是 " Hello World ", 经过 strip() 处理后,结果字符串是 "Hello World"。 """ print(stripped_string) 7.注意事项

  使用字符串时,要考虑字符串的不可变性、字符编码、转义字符、格式化、连接方式等方面的问题,以确保代码的可靠性和性能。

字符串是不可变的 在Python中,字符串是不可变的,这意味着一旦创建,就无法更改其内容。任何对字符串的操作都会创建一个新的字符串。如果需要对字符串进行频繁的修改,可能需要考虑使用其他可变类型,如列表。

编码和解码

字符串是以特定的字符编码方式存储的。在处理文件、网络通信等情况时,确保正确地进行编码和解码操作是重要的。常见的字符编码包括UTF-8、UTF-16等。

转义字符

在字符串中使用转义字符来表示特殊字符,例如换行符\n、制表符\t等。了解并正确使用转义字符可以避免意外的问题。

字符串格式化

使用适当的方式进行字符串格式化,例如使用% 操作符、format() 方法或者 f-strings(Python 3.6及以上版本)。这有助于代码的可读性和维护性。

字符串连接

避免在循环中频繁使用 + 操作符进行字符串连接,特别是当连接大量字符串时。这样的操作会创建多个临时字符串,影响性能。考虑使用 str.join() 方法。

字符串比较

在比较字符串时,要注意大小写和空白字符。有时候使用 str.strip()去除两侧空格是比较字符串之前的一种好做法,以确保一致性。

原始字符串

在处理正则表达式、文件路径等时,可以使用原始字符串(以 r 开头),以避免转义字符的影响。

性能优化

对于大量字符串拼接的情况,考虑使用 str.join() 方法或者 io.StringIO 类来优化性能。这可以减少由于创建多个临时字符串而引起的性能问题。 在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有