【问题标题】:Query on splitting and regex查询拆分和正则表达式
【发布时间】:2020-07-15 16:59:55
【问题描述】:

我有一个字符串,其中包含一个名称和两个拆分的电话号码,

a = '19654 12876 70103 50919 Anish Krishnan'

首先我使用 re 加入数字

re.sub(r'(\d)\s+(\d)', r'\1\2', a)

这样做,我明白了

'19654128767010350919 Anish Krishnan'

现在,我需要将号码单独拆分到第 10 位,以便获得两个完整的电话号码

这是我需要的输出

'1965412876 7010350919 Anish Krishnan'

谁能告诉我怎么做,谢谢。

【问题讨论】:

  • 如果格式总是4组数字?你为什么要先加入他们?您不能只指定一个匹配所有 4 个组并将前 2 组和后 2 组连接在一起但之间有空格的表达式吗?
  • 可以是n个组。我试过了,但如果有第三组我就不行了。
  • n 个 5 组?所以如果总共有 15 个数字(3 组),你期望输出是什么?
  • 5人一组,但组数总是偶数。

标签: python-3.x regex string list split


【解决方案1】:

如果您只是替换 5 位数字的重复,后跟一个空格,后跟另外 5 位数字,它将匹配两对数字并将它们连接起来:

>>> re.sub(r"(\d{5})\s(\d{5})", r"\1\2", "19654 12876 70103 50919 Anish Krishnan")
'1965412876 7010350919 Anish Krishnan'

【讨论】:

    【解决方案2】:

    您需要使用\d+ 消耗所有相邻的数字:

    import re
    
    output = re.sub("(\d+)\s+(\d+)", r"\1\2", string)
    print(output)  # 1965412876 7010350919 Anish Krishnan
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-18
      • 1970-01-01
      • 1970-01-01
      • 2012-11-05
      • 2013-08-11
      • 2021-12-04
      • 1970-01-01
      相关资源
      最近更新 更多