1、字符串的基本操作
- 字符串连接:使用
+
运算符可以将两个字符串连接起来。str1 = "Hello" str2 = "World" result = str1 + " " + str2 print(result)
- 字符串复制:使用
*
运算符可以将一个字符串复制多次。original = "abc" repeated = original * 3 print(repeated)
- 字符串长度:使用
len()
函数可以获取字符串的长度。text = "Hello, World!" length = len(text) print(length)
- 字符串索引和切片:使用索引获取字符串中的单个字符,索引从0开始。
text = "Python" first_char = text[0] print(first_char)
使用切片获取子字符串。
text = "Python" sub_str = text[1:4] # 获取索引1到3的子字符串 print(sub_str)
- 字符串查找:使用
find()
方法可以查找子字符串在主字符串中的位置。text = "Hello, World!" index = text.find("World") print(index)
-
字符串替换:使用
replace()
方法可以替换字符串中的子字符串。text = "Hello, World!" new_text = text.replace("World", "Universe") print(new_text)
-
字符串大小写转换:使用
lower()
和upper()
方法可以将字符串转换为小写和大写。text = "Hello" lower_case = text.lower() upper_case = text.upper()
-
字符串去除空格:使用
strip()
方法可以去除字符串两端的空格。text = " Some text with spaces " trimmed_text = text.strip()
也可以选择使用
lstrip()
方法(只去除左侧空格)或rstrip()
方法(只去除右侧空格)来实现单侧空格的去除。例如:text = " Hello, World! " left_stripped_text = text.lstrip() # 去除左侧空格 right_stripped_text = text.rstrip() # 去除右侧空格
strip()也允许指定一个字符集合作为参数,用于去除字符串两端包含在该字符集合中的字符。以下是
strip(char)
方法的示例:text = "+++Hello, World!+++" stripped_text = text.strip('+') print(stripped_text)#输出Hello, World!
lstrip(),rstrip()也一样
-
将一个字符串分割成多个子字符串:
在 Python 中,
split()
方法是用于将一个字符串分割成多个子字符串的方法。默认情况下,split()
方法使用空格作为分隔符,将字符串分割成一个字符串列表。也可以指定其他分隔符作为参数。以下是
split()
方法的基本用法:text = "Hello, World!" words = text.split() print(words)
上述代码会输出:
['Hello,', 'World!']
在这个例子中,默认的空格作为分隔符,将字符串 "Hello, World!" 分割成了两个子字符串 "Hello," 和 "World!"。
还可以使用自定义的分隔符。例如:
text = "apple,banana,orange" fruits = text.split(',') print(fruits)
上述代码会输出:
['apple', 'banana', 'orange']
在这个例子中,逗号
,
被指定为分隔符,将字符串 "apple,banana,orange" 分割成了一个包含三个元素的列表。需要注意的是,
split()
方法返回一个包含分割后子字符串的列表。如果不提供分隔符,默认使用空格分割。如果字符串中有连续的分隔符,split()
方法会将它们视为一个分隔符,不会在结果列表中添加空字符串。 -
将一个字符串居中:
center(width, char)
是字符串方法,用于将一个字符串居中,并在两侧填充指定字符,使其达到指定的宽度。以下是
center(width, char)
方法的示例:text = "Hello, World!" centered_text = text.center(20, '*') print(centered_text)
上述代码输出:
***Hello, World!***
在这个例子中,
center(20, '*')
方法将字符串text
居中,并使用星号*
在两侧填充,使整个字符串的宽度为 20 个字符。如果指定的宽度小于原始字符串的长度,则返回原始字符串,因为无需填充。
你可以根据需要选择不同的填充字符,或者不指定填充字符,默认使用空格进行填充。例如:
text = "Hello, World!" centered_text_spaces = text.center(20) # 默认使用空格填充 print(centered_text_spaces)
2、格式化字符串
1、占位符格式化字符串:
在 Python 中,字符串格式化的占位符可以使用 %
运算符进行,这称为旧式字符串格式化。
以下是一个使用占位符 %
的字符串格式化示例:
name = "Charlie"
age = 28
formatted_string = "My name is %s and I am %d years old." % (name, age)
print(formatted_string)
上述代码输出:
My name is Charlie and I am 28 years old.
在这个例子中,%s
表示字符串占位符,%d
表示整数占位符。%
运算符后的括号中的值会按顺序替换相应的占位符。
以下是一些常用的占位符:
%s
: 字符串%d
: 十进制整数%f
: 浮点数
你可以根据需要选择不同的占位符。如果要格式化多个值,需要将它们放在一个元组中,作为 %
运算符右侧的值。
需要注意的是,旧式字符串格式化在 Python 3.6 及以上版本中已不推荐使用,而推荐使用 format()
方法或 f-strings。这两种方法更灵活、可读性更好,并且有更好的性能。
2、f-strings格式化字符串:
f-strings 是在 Python 3.6 及以上版本引入的一种字符串格式化方法。它使用在字符串前加上字母 "f" 并包含花括号 {}
来表示表达式的方式。这使得在字符串中嵌入变量和表达式更加直观和简洁。
以下是一些使用 f-strings 的示例:
-
基本用法:
name = "Alice" age = 30 formatted_string = f"My name is {name} and I am {age} years old." print(formatted_string)
输出:
My name is Alice and I am 30 years old.
-
表达式嵌入:
x = 5 y = 10 result = f"The sum of {x} and {y} is {x + y}." print(result)
输出:
The sum of 5 and 10 is 15.
-
数字格式化:
pi_value = 3.14159 formatted_pi = f"The value of pi is {pi_value:.2f}" print(formatted_pi)
输出:
The value of pi is 3.14
-
使用变量和表达式:
a = 3 b = 4 result = f"The square of the sum of {a} and {b} is {(a + b)**2}" print(result)
输出:
The square of the sum of 3 and 4 is 49.
f-strings 的优势在于它们简洁、易读,而且性能通常比其他字符串格式化方法更好。它是一种推荐使用的字符串格式化方式,特别是在需要动态生成字符串时。
3、format()格式化字符串:
在 Python 中,使用 format()
方法进行字符串格式化是一种更现代和灵活的方式。这个方法允许你使用大括号 {}
作为占位符,并通过 format()
方法中的参数进行替换。
以下是一个使用 format()
方法的字符串格式化示例:
name = "David"
age = 35
formatted_string = "My name is {} and I am {} years old.".format(name, age)
print(formatted_string)
上述代码输出:
My name is David and I am 35 years old.
在这个例子中,{}
占位符会按照它们在字符串中的顺序被 format()
方法中的参数替换。
还可以使用位置参数或关键字参数来明确指定占位符的替换值:
formatted_string = "My name is {0} and I am {1} years old.".format(name, age)
# 或者
formatted_string = "My name is {name} and I am {age} years old.".format(name=name, age=age)
这两种方式都可以达到相同的效果。format()
方法也支持更复杂的格式化,例如指定字段宽度、精度等。详细如下文。
4、format详细格式控制:
- 字段宽度和对齐:
text = "Hello" formatted_text = "{:>10}".format(text) print(formatted_text)
输出:
Hello
在这个例子中,
{:>10}
表示使用字段宽度为 10,并且右对齐。可以使用<
进行左对齐,^
进行居中对齐。 -
精度控制:
pi_value = 3.14159 formatted_pi = "{:.2f}".format(pi_value) print(formatted_pi)
输出:
3.14
在这个例子中,
{:.2f}
表示格式化为带有两位小数的浮点数。 -
符号、千位分隔符和正负号:
number = -1234567 formatted_number = "{:+,}".format(number) print(formatted_number)
输出:
-1,234,567
在这个例子中,{:+,}表示包括正负号并使用千位分隔符。
{:-,}和 {:+,}都是在格式化数字时使用的格式说明符,它们分别表示不显示正号和显示正号,并且使用千位分隔符。
- 二进制、八进制和十六进制:
value = 42 formatted_binary = "Binary: {:b}".format(value) formatted_octal = "Octal: {:o}".format(value) formatted_hex = "Hexadecimal: {:x}".format(value) print(formatted_binary) print(formatted_octal) print(formatted_hex)
输出:
Binary: 101010 Octal: 52 Hexadecimal: 2a