从完整版本字符串中获取主版本的子字符串

2024-04-25 13:33:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个脚本,我必须把完整版本的字符串转换成它们的主要部分。例如,我必须将1.2.3.4.5.6.7转换为1.2

目前我正在使用这个:'.'.join(s.split('.', 2)[:-1])

>>> s = '1.2.3.4.5.6.7'
>>> '.'.join(s.split('.', 2)[:-1])
'1.2'

效果很好。但是它非常丑陋,我希望有更好的方法。

编辑:

  • 表现是个问题,所以表现糟糕的答案(虽然看起来不错)对我不好。在
  • '.'.join(s.split('.', 2)[:-1])也可以是{},同样容易

Tags: 方法字符串答案版本脚本编辑splitjoin
3条回答

如果预编译regex,那么使用regex并不是一种过度使用。因此

import re
pattern = re.compile(r'^[0-9]+\.[0-9]+')

# ... later ...

version = '1.2.3.4.5.6.7'

def get_version(s):
    m = pattern.search(s)
    if m:
        return m.group()


print get_version(version)

这也将确保您的版本与格式匹配。在

使用regex

>>> s = '1.2.3.4.5.6.7'
>>> re.search(r'(\d+\.\d+)', s).group()
'1.2'

时间比较:

^{pr2}$

基于re.findall的解决方案也会很慢,因为它需要对整个字符串进行迭代,而re.search会在第一个匹配处停止。在

另一种方法可以是'.'.join(s.split('.')[:2]),但它非常相似。我认为没有其他有效的方法:你必须按点分割,然后只选择前两个元素。在

这个解决方案(或者你的,都是一样的)很好。只要避免使用regex,这对这种任务来说太过分了。在

相关问题 更多 >

    热门问题