【问题标题】:How to keep only the numbers with 3 digits? [duplicate]如何只保留 3 位数字? [复制]
【发布时间】:2021-03-18 10:34:51
【问题描述】:

我想使用正则表达式在字符串中只保留 3 位数字。

输入

'1 12 123 1234'

预期输出:

'123'

我厌倦了删除更多 3 位数的号码

re.sub("\d{4}", '', '1 12 123 1234')

但我不知道如何删除少于 3 位数的号码。

【问题讨论】:

  • 只要使用re.findall(r'\b\d{3,}', s)
  • 与其尝试删除所有位数错误的内容,不如尝试找到所有具有正确位数的内容?
  • re.findall(r"(?<!\d)\d{3}(?!\d)", s)

标签: python python-3.x regex


【解决方案1】:

为什么是正则表达式?人们想要使用正则表达式的许多事情都可以通过简单的字符串操作来完成。

在你的情况下:

s = '1 12 123 1234'
s = " ".join(elem for elem in s.split() if len(elem)==3)

split() 不带参数按空格分割,所以你有一个带数字的字符串列表

if len(elem)==3 在理解中只过滤你需要的东西

" ".join 将字符串连接起来,它们之间有空格


更复杂的例子:

>>> s = "123 2 345 1 21 1234 456 23"
>>> s = " ".join(elem for elem in s.split() if len(elem)==3)
>>> s
'123 345 456'

【讨论】:

    猜你喜欢
    • 2015-08-25
    • 2018-06-16
    • 2014-02-08
    • 1970-01-01
    • 2019-05-13
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 2020-09-11
    相关资源
    最近更新 更多