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

如何将字符串符号转为未移位对应字符并统一转为小写?

问题描述

现有字符串定义如下:

x = "Foo 890 bar *()"

我们需要完成两个需求:

  • 将字符串中的"*()"替换为原字符串里的数字890
  • 把所有字母转为小写

最终预期得到的结果是:

"foo 890 bar 890 "

但直接调用x.lower()只能得到非预期的结果:

x.lower() => "foo 890 bar *()"

求可行的解决方案。


解决方案

这里给你几个简单易实现的方法,根据你的需求选就行:

方法1:先替换目标子串,再转小写

这是最直接的思路,先把"*()"替换成"890",再统一将字母转小写。代码如下:

x = "Foo 890 bar *()"
processed_str = x.replace("*()", "890").lower()
print(processed_str)  # 输出: foo 890 bar 890 

因为替换的内容是数字,不受大小写转换影响,所以这个顺序完全没问题。

方法2:先转小写,再替换(效果一致)

如果你习惯先处理字母大小写,也可以先转小写再替换"*()",结果是一样的:

x = "Foo 890 bar *()"
processed_str = x.lower().replace("*()", "890")
print(processed_str)  # 输出: foo 890 bar 890 

毕竟*()本身没有大小写之分,两种顺序都能达到目的。

方法3:动态提取数字(更灵活)

如果以后字符串里的数字可能变化,不想硬写890,可以用正则表达式先提取出字符串中的数字,再做替换。这样不管数字是多少,都能自动匹配替换:

import re

x = "Foo 890 bar *()"
# 提取字符串中的第一个数字串
matched_num = re.search(r'\d+', x).group()
processed_str = x.lower().replace("*()", matched_num)
print(processed_str)  # 输出: foo 890 bar 890 

比如如果原字符串变成"Hello 456 world *()",这个代码也能自动输出"hello 456 world 456 ",不用修改替换的目标值,扩展性更强。


内容的提问来源于stack exchange,提问作者DCA-

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:14:17