python如果列表超过20个字符,如果它少于20个字符则缩短为20,添加0使其成为20

时间:2014-02-08 15:08:36

标签: python list python-3.x truncate

在python程序中,我有

...
wf = raw_input("enter string \n")
wl = list(wf)
wd = wl[:-4] 
#now I want to see if wl is over 20 characters
#if it is, I want it truncated to 20 characters
#if not, I want character appended until it is 20 characters
#if it is 20 characters leave it alone
...

请帮助让评论的内容完成它所说的

4 个答案:

答案 0 :(得分:4)

最简单的方法是使用切片和str.zfill函数,就像这样

data = "abcd"
print data[:20].zfill(20)       # 0000000000000000abcd

dataabcdefghijklmnopqrstuvwxyz时,输出为

abcdefghijklmnopqrst

注意:如果你的意思是附加零,你可以使用str.ljust函数,就像这样

data = "abcdefghijklmnopqrstuvwxyz"
print data[:20].ljust(20, "0")        # abcdefghijklmnopqrst

data = "abcd"
print data[:20].ljust(20, "0")        # abcd0000000000000000

使用ljustrjust的好处是,我们可以使用任意填充字符。

答案 1 :(得分:3)

使用str.format

>>> '{:0<20.20}'.format('abcd') # left align
'abcd0000000000000000'
>>> '{:0>20.20}'.format('abcd') # right align
'0000000000000000abcd'
>>> '{:0<20.20}'.format('abcdefghijklmnopqrstuvwxyz')
'abcdefghijklmnopqrst'

format

>>> format('abcd', '0<20.20')
'abcd0000000000000000'
>>> format('abcdefghijklmnopqrstuvwxyz', '0<20.20')
'abcdefghijklmnopqrst'

关于使用的格式规范:

0: fill character.
<, >: left, right align.
20: width
.20: precision (for string, limit length)

答案 2 :(得分:0)

一个简单的可以是(读评论):

def what(s):
    l = len(s)
    if l == 20:  # if length is 20  
     return s    # return as it is
    if l > 20:   # > 20
     return s[:20] # return first 20
    else:
     return s + '0' * (20 - l) # add(+)  (20 - length)'0's

print what('bye' * 3)
print what('bye' * 10)
print what('a' * 20)

输出:

$ python x.py
byebyebye00000000000
byebyebyebyebyebyeby
aaaaaaaaaaaaaaaaaaaa

答案 3 :(得分:0)

如果你想按照规定使用它作为一个列表,那么list comprehension会带你到那里:

my_data = 'abcdef'

my_list = list(my_data)
my_list = [my_list[i] if i < len(my_list) else 0 for i in range(20)]

print my_list

输出:

['a', 'b', 'c', 'd', 'e', 'f', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

这也包括&gt; = 20个字符的情况。