【问题标题】:How to pad with n characters in Python如何在 Python 中填充 n 个字符
【发布时间】:2022-05-06 14:14:09
【问题描述】:

我应该定义一个函数pad_with_n_chars(s, n, c),它需要一个 字符串 's'、整数 'n' 和字符 'c' 并返回 一个由 's' 组成的字符串,用 'c' 填充以创建一个 长度为“n”的居中“s”的字符串。例如, pad_with_n_chars(”dog”, 5, ”x”) 应该返回 字符串“xdogx”。

【问题讨论】:

  • 问题的实际解决方案绝对重要。但同样重要的是错误输入的检测和处理。考虑一下您的 3 个输入参数,看看您是否可以预测每个参数的哪些值会导致您的 pad_with_n_chars 函数出现问题。

标签: python string


【解决方案1】:

使用 Python2.6 或更高版本,无需定义自己的函数;字符串format 方法可以为您完成所有这些工作:

In [18]: '{s:{c}^{n}}'.format(s='dog',n=5,c='x')
Out[18]: 'xdogx'

使用 f 字符串:f'{"dog":x^5}'

【讨论】:

  • +1。请注意,该格式是最新的,可能不适用于旧版 Python。
  • 也可以内联指定宽度和填充字符:'{:x^5}'.format('dog')
  • 也可以链接多个规则。 "{:#^10.0%}".format(0.234) 将输出 '###23%####'。其中“#^10”是居中和填充定义,“.0%”是百分比格式。
【解决方案2】:

是的,只需使用 ljust 或 rjust 对任何给定字符进行左对齐(右对齐)和右对齐(左对齐)。

例如 ... 使 '111' 成为一个用 'x'es 填充的 5 位字符串

在 Python3.6 中:

>>> '111'.ljust(5, 'x')
111xx

>>> '111'.rjust(5, 'x')
xx111

【讨论】:

    【解决方案3】:

    看起来您只是在寻找指针,而不是完整的解决方案。所以这里有一个:

    你可以在python中将字符串相乘:

    >>> "A" * 4 'AAAA'

    此外,我会使用更好的名称,而不是 s,我会使用 text,这样会更清晰。即使你现在的教授(我想你正在大学学习 Python。)使用如此可怕的缩写。

    【讨论】:

      【解决方案4】:

      好吧,由于这是一个家庭作业问题,如果您使用随附的“电池”,您可能不会明白发生了什么。

      def pad_with_n_chars(s, n, c):
          r=n - len(s)
          if r%2==0:
             pad=r/2*c
             return pad + s + pad
          else:
             print "what to do if odd ? "
             #return 1
      print pad_with_n_chars("doggy",9,"y")
      

      或者,当你不再上学时。

      >>> "dog".center(5,"x")
      'xdogx'
      

      【讨论】:

        【解决方案5】:
        print '=' * 60
        header = lambda x: '%s%s%s' % ('=' * (abs(int(len(x)) - 60) / 2 ),x,'=' * (abs(int(len(x)) - 60) / 2 ) )
        print header("Bayors")
        

        【讨论】:

          【解决方案6】:

          在 Python 3.x 中有字符串方法:ljustrjustcenter

          我创建了一个函数:

          def header(txt: str, width=45, filler='-', align='c'):
              assert align in 'lcr'
              return {'l': txt.ljust, 'c': txt.center, 'r': txt.rjust}[align](width, filler)
          
          print(header("Hello World"))
          print(header("Hello World", align='l'))
          print(header("Hello World", align='r'))
          

          输出:

          -----------------Hello World-----------------
          Hello World----------------------------------
          ----------------------------------Hello World
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-08-03
            • 1970-01-01
            • 2020-10-07
            • 2013-12-03
            • 1970-01-01
            • 2013-08-17
            • 2011-12-23
            • 1970-01-01
            相关资源
            最近更新 更多