You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python strip()函数遇异常:括号后字符被误删

解决strip()意外移除括号后首字符的问题

你遇到的问题是用strip()处理字符串时,括号后的'd'被意外移除了,代码和输出如下:

c = 'PurchaseOrderItem(d330d1adf0)'
print(c.strip("PurchaseOrderItem("+")"))

输出:330d1adf0
预期:d330d1adf0

问题原因

核心误区:strip()的参数是字符集合,不是固定字符串
你传入的参数"PurchaseOrderItem()"是一个字符集合,里面包含了d(看PurchaseOrderItem里的Order有个d)。strip()会从字符串两端逐个移除所有属于这个集合的字符——先去掉开头的PurchaseOrderItem(,接下来的d也在集合里,所以会被一起移除,直到遇到不在集合里的3才停止,最后再去掉结尾的),就得到了330d1adf0。

解决方法

  • 方法1:startswith+切片(最可靠)
    先判断字符串是否以指定前缀开头,再通过切片精准去掉前缀和结尾的括号:
c = 'PurchaseOrderItem(d330d1adf0)'
prefix = 'PurchaseOrderItem('
if c.startswith(prefix):
    result = c[len(prefix):-1]  # -1表示去掉最后一个字符')'
print(result)  # 输出: d330d1adf0
  • 方法2:拆分使用lstrip和rstrip(注意局限性)
    如果能确定内容开头不会出现前缀里的字符(比如这里的d),可以用lstrip移除左侧的前缀字符集,再用rstrip移除右侧的):
c = 'PurchaseOrderItem(d330d1adf0)'
result = c.lstrip('PurchaseOrderItem(').rstrip(')')
print(result)  # 输出: d330d1adf0

注意:如果内容开头也有前缀里的字符,这种方法还是会误删,优先用方法1

  • 方法3:正则表达式提取括号内容
    适合需要频繁提取类似格式内容的场景:
import re
c = 'PurchaseOrderItem(d330d1adf0)'
match = re.search(r'PurchaseOrderItem\((.*)\)', c)
if match:
    result = match.group(1)
print(result)  # 输出: d330d1adf0

内容的提问来源于stack exchange,提问作者Souradeep Sengupta Developer D

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 08:22:50