【问题标题】:How to put a colon (:) after every second character? [duplicate]如何在每个第二个字符后加一个冒号 (:)? [复制]
【发布时间】:2021-12-21 12:27:15
【问题描述】:

我想在每个第二个字符之后加上:

def maccim():
    l = ["A", "B", "C", "D", "E", "F", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
    macim = random.sample(l, 12)
    szo = ""
    for x in macim:
        szo += x
    print(szo)

maccim()

我想变成这样:94:EA:60:F8:BC:2D 作为一个mac地址。

【问题讨论】:

    标签: python


    【解决方案1】:

    用切片创建几个字符,然后用:join他们:

    import random
    
    def maccim():
        l = ["A","B","C","D","E","F","0","1","2","3","4","5","6","7","8","9"]
        macim = ''.join(random.sample(l, 12))
    
        print(':'.join(macim[i:i+2] for i in range(0, len(macim), 2)))
        
    maccim()
    

    【讨论】:

      【解决方案2】:

      最简单的方法是在将字符串放在一起时使用enumerate

      import random
      
      def maccim():
          list=["A","B","C","D","E","F","0","1","2","3","4","5","6","7","8","9"]
          macim=random.sample(list,12)
          szo=""
          for index, x in enumerate(macim):
              szo+=x
              if (index+1)%2 == 0:
                  szo+=":"
          szo = szo[:-1]
          print(szo)
      maccim()
      

      然后就可以通过索引来判断是否需要加一个':'

      【讨论】:

      • 那会很好,但我不知道如何删除 : 在它的末尾 75:1A:C2:9E:DB:36:
      • 这将在最后一个字符后添加一个额外的:
      • 是的,你是对的。您可以在循环后使用szo =szo[:-1] 来删除字符串中的最后一个元素。
      【解决方案3】:

      你可以用残酷的方式做到这一点

      for i in range(len(macim)):
          szo += macin[i]
          if i % 2 and i < len(macim) - 1:
              szo += ":"
      

      或花哨的方式

      def chunks(l, n):
          n = max(1, n)
          return (l[i:i+n] for i in range(0, len(l), n))
      
      ...
      
      ":".join(chunks(macin, 2))
      

      【讨论】:

        【解决方案4】:

        这是另一个使用list splice的解决方案,

        import random
        
        
        def maccim():
            list_ = [
                "A", "B", "C", "D", "E", "F", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"
            ]
            macim = random.sample(list_, 12)
        
            return ":".join([i + j for i, j in zip(macim[::2], macim[1::2])])
        
        
        print(maccim())
        

        【讨论】:

          【解决方案5】:

          只是为了好玩,如果你想要一个使用 zipmap 的简单单行:

          import string
          import random
          
          chars = random.sample(string.hexdigits[:16], 12)
          
          ':'.join(map(''.join, zip(chars[::2], chars[1::2])))
          

          这将输出:

          '07:9d:b5:1c:84:ae'
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-08-27
            • 1970-01-01
            • 2012-10-01
            • 1970-01-01
            • 1970-01-01
            • 2019-01-30
            • 1970-01-01
            相关资源
            最近更新 更多