gpt4 book ai didi

python - 如何替换所有数字,python 中的特定数字除外?

转载 作者:太空宇宙 更新时间:2023-11-04 07:29:09 25 4
gpt4 key购买 nike

我有一个字符串列表,其中一些包含数字。

例如:

  • abc123 def3464
  • 你好32 再见64
  • 一些数字 1254324

我想清理这些字符串中的所有数字,但保留特定数字,例如 32 和 64,因此清理将返回以下内容:

  • abc def
  • 你好32 再见64
  • 一些数字

请注意,在第一个示例 (def3464) 中,数字 64 存在,但不是单独存在的,因此应将其删除。

有什么想法吗?

最佳答案

即使没有 lambda,您也可以完成任务,仅依靠正则表达式功能(尽管正则表达式更复杂)。

所需的正则表达式是:(?:(32|64)|\d+)(?=\D|$)。详情:

  • (?: - 非捕获组的开始,需要作为容器寻找替代品。
  • (32|64) - 第一个替代方案(和捕获组),要么3264
  • | - 或者。
  • \d+ - 第二种选择,数字序列。
  • ) - 非捕获组结束。
  • (?=\D|$) -(共同)结尾部分(在两种选择之后)- 正查找非数字字符或字符串结尾。

第一个替代项(和捕获组)匹配 3264第二种选择(没有捕获组)匹配任何其他数字。

替换表达式为\1(替换匹配的内容为第一个捕获组)。

所以,如果second备选匹配,则第一组匹配nothing,因此不会将任何内容替换为当前匹配项。

为了演示它是如何工作的,请运行示例程序:

import re
src = ['abc123 def3464', 'hello32 goodbye64', 'some numbers 1254324']
print(src)
result = [re.sub(r"(?:(32|64)|\d+)(?=\D|$)", r"\1", i) for i in src]
print(result)

如果您对最后输出字符串中的尾随空格不满意,在 re.sub(...) 之后添加 .strip()

关于python - 如何替换所有数字,python 中的特定数字除外?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51481066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com