在 Python 3.9 中,新增了 str.removeprefix()
方法,用于从字符串的开头移除指定的前缀(如果存在)。如果字符串不以指定前缀开头,原字符串保持不变。
用法:
str.removeprefix(prefix)
prefix
: 要移除的前缀字符串。- 返回一个新字符串,没有修改原字符串。
示例代码:
# 示例字符串
text = "prefix_example"
# 移除前缀
result = text.removeprefix("prefix_")
print(result) # 输出: example
# 如果前缀不存在,字符串保持不变
result_no_change = text.removeprefix("no_prefix")
print(result_no_change) # 输出: prefix_example
特点:
-
简化代码:
不需要手动使用startswith
和切片,代码更简洁。# Python 3.9 之前的写法 if text.startswith("prefix_"): text = text[len("prefix_"):]
等效于:
# Python 3.9+ 的写法 text = text.removeprefix("prefix_")
-
不修改原字符串:
返回新字符串,原字符串保持不变(字符串是不可变对象)。 -
性能高效:
内置实现,性能优于手动切片。
应用场景:
-
处理文件名:
file_name = "temp_data.txt" clean_name = file_name.removeprefix("temp_") print(clean_name) # 输出: data.txt
-
解析字符串数据:
config = "config_option=value" key = config.removeprefix("config_") print(key) # 输出: option=value
-
移除动态生成的前缀:
logs = ["DEBUG_log1", "DEBUG_log2", "INFO_log3"] clean_logs = [log.removeprefix("DEBUG_") for log in logs] print(clean_logs) # 输出: ['log1', 'log2', 'INFO_log3']
注意事项:
- 如果未找到前缀,不会报错,直接返回原字符串。
- 大小写敏感,例如
text.removeprefix("PREFIX_")
不会匹配prefix_
。
对应方法:
Python 3.9 同时还引入了 str.removesuffix()
,用于移除字符串结尾的指定后缀。