【问题标题】:Remove everything after the first hyphen from the left [duplicate]删除左侧第一个连字符后的所有内容[重复]
【发布时间】:2019-12-06 02:40:41
【问题描述】:

我一直在尝试删除第三个之后的所有内容 - 从字符串的左侧开始,包括 -

示例我的字符串有

输入:sukumar-123-656-321-421

输出; sukumar-123

要求始终从字符串左侧的最后 3 个连字符中删除所有内容。

【问题讨论】:

  • 那么您能分享一下您一直在尝试的方法并解释您遇到的问题吗?
  • 字符串的长度总是一样的吗?连字符后面的数字总是一样吗?
  • @murugan_bala 只知道您从问题标题中询问的内容与您从问题正文中询问的内容不同。你应该选一个。是你想remove everything from after the first hyphen 还是你想remove everything after the third hyphen。如果你想要两者,那么你应该明确说明。
  • 最好准确定义以下字符串的输出外观。1) Input=sukumar-123 expected_output=? 2)输入=sukumar 预期输出=? 3)输入=sukumar-123-656 预期输出=?。在示例中,您显示了 Input=sukumar-123-656-321-421,第三个连字符位置是“-321-421”,但是您的预期输出=sukumar-123 而不是 sukumar-123-656(“删除之后的所有内容第三个“-”)
  • @GeorgeJoseph - 你能把你的 commnet 加粗并标记 goodvibration,以便他们能理解我想说的话吗?

标签: python python-3.x


【解决方案1】:

这是使用正则表达式的解决方案:模式(-[^-]*) 匹配连字符后跟任意数量的非连字符字符,{3} 使其连续匹配 3 次,$ 使其仅匹配字符串的结尾。

>>> import re
>>> pattern = re.compile('(-[^-]*){3}$')
>>> pattern.sub('', 'sukumar-123-656-321-421')
'sukumar-123'

【讨论】:

    【解决方案2】:

    试试这个:

    def func(x):
        return '-'.join(x.split('-')[:-3])
    

    【讨论】:

      猜你喜欢
      • 2012-11-28
      • 2018-04-03
      • 1970-01-01
      • 2022-08-19
      • 2015-09-26
      • 1970-01-01
      • 2021-02-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多