在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
...
请帮助让评论的内容完成它所说的
答案 0 :(得分:4)
最简单的方法是使用切片和str.zfill
函数,就像这样
data = "abcd"
print data[:20].zfill(20) # 0000000000000000abcd
当data
为abcdefghijklmnopqrstuvwxyz
时,输出为
abcdefghijklmnopqrst
注意:如果你的意思是附加零,你可以使用str.ljust
函数,就像这样
data = "abcdefghijklmnopqrstuvwxyz"
print data[:20].ljust(20, "0") # abcdefghijklmnopqrst
data = "abcd"
print data[:20].ljust(20, "0") # abcd0000000000000000
使用ljust
和rjust
的好处是,我们可以使用任意填充字符。
答案 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个字符的情况。