欢迎访问Python3分钟系列。花3分钟时间,学习或温习一个Python知识点。 今天是第241。
大家好,我是小K,先祝大家2025年新年快乐哈~
今天给大家带一个有关于strip函数的陷阱……
strip默认删除的字符
默认情况下,
strip、lstrip和rstrip会删除所有的空白字符(包括空格、换行符 \n、制表符 \t )。
s = "\t maishu \n"
print(s.strip()) # 输出 "maishu"
陷阱:
如果你只想去掉空格,但字符串中有换行符或制表符,它们也会被意外删除。
规避方法:
明确指定要删除的字符
s = " \t maishu \n "
print(s.strip(" ")) # 输出 "\t maishu \n"(只去掉两侧的空格)
删除的字符是基于集合匹配
strip系列方法接受一个字符串参数,表示要删除的字符集合,而不是一个完整的字符串。
s = "abcdea"
print(s.strip("ab")) # 输出 "cde"
strip(“ab”) 将 “a” 和 “b” 作为独立字符进行匹配,从字符串两侧删除,直到不再匹配为止。
陷阱:
如果你期望只删除开头和结尾的某个特定字符串(如 “ab”),结果可能和预期不同。
规避方法:
如果要删除特定的前缀或后缀,可以使用 str.removeprefix 和 str.removesuffix(需要Python 3.9+)
s = "abcdea"
print(s.removeprefix("ab")) # 输出 "cdea"

动态内容可能引发意外结果
当删除的内容是动态的(比如用户输入的内容),可能会导致不易察觉的问题。
s = "2023年12月31日"
chars_to_remove = "0123" # 动态指定要删除的字符
print(s.strip(chars_to_remove)) # 输出 "年12月31日"
陷阱:
strip 会将 “0123” 中的每个字符作为独立字符,删除两侧的所有匹配项。
规避方法:
明确指定前缀或后缀,或使用正则表达式来匹配更精确的模式。
import re
s = "2023年12月31日"
print(re.sub(r"^2023", "", s)) # 输出 "年12月31日"
最后
原文链接:https://www.zsiss.com/9979.html,转载请注明出处。

评论0