首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Python中的regex去除星号"*“中的数字

使用Python中的regex去除星号"*“中的数字
EN

Stack Overflow用户
提问于 2021-11-09 03:59:12
回答 1查看 36关注 0票数 0

我想要做的是去掉星号之间的数字,并保持其他数字在附近。我运行我的正则表达式,但它删除了星号之间的所有内容。

代码语言:javascript
运行
复制
import re
msg = """
    1 x * Build your pizza * ($ 99MXN)
    1 x * Baitz Cinnamon 16 pieces * ($ 44.50 MXN)
    1 x * Potatoes 220 g * ($ 44.50 MXN) """
re.sub(r'\*.*\*', "", msg)

我所期望的结果是:

代码语言:javascript
运行
复制
  """
     1 x * Build your pizza * ($ 99MXN)
     1 x * Baitz Cinnamon pieces * ($ 44.50 MXN)
     1 x * Potatoes g * ($ 44.50 MXN)
    """
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-09 04:04:49

您可以将lambda传递给re.sub for repl,并筛选出星号中包含的子字符串的数字:

代码语言:javascript
运行
复制
result = re.sub('\*.+\*',
                lambda x: ''.join(c for c in x.group(0) if not c.isdigit()),
                msg)
代码语言:javascript
运行
复制
print(result)
    1 x * Build your pizza * ($ 99MXN)
    1 x * Baitz Cinnamon  pieces * ($ 44.50 MXN)
    1 x * Potatoes  g * ($ 44.50 MXN) 

如果不想使用上述方法(不删除前面/后面的空格字符),可以使用嵌套re.sub

代码语言:javascript
运行
复制
result = re.sub('\*.+\*',
                lambda x: re.sub('\s*\d+\s*','',x.group(0)),
                msg)
print(result)
    1 x * Build your pizza * ($ 99MXN)
    1 x * Baitz Cinnamonpieces * ($ 44.50 MXN)
    1 x * Potatoesg * ($ 44.50 MXN) 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69892662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档