如何在Python中填充n个字符

时间:2010-10-24 14:01:31

标签: python string

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

6 个答案:

答案 0 :(得分:48)

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

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

答案 1 :(得分:13)

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

你可以在python中加倍字符串:

>>> "A" * 4
'AAAA'

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

答案 2 :(得分:11)

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

例如......制作' 111'用' x'填充的5位数字符串

在Python3.6中:

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

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

答案 3 :(得分:2)

print '=' * 60
header = lambda x: '%s%s%s' % ('=' * (abs(int(len(x)) - 60) / 2 ),x,'=' * (abs(int(len(x)) - 60) / 2 ) )
print header("Bayors")

答案 4 :(得分:1)

好吧,因为这是一个家庭作业问题,如果您使用包含的“电池”,您可能无法理解发生了什么。

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 :(得分:-1)

在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