2015-06-15 155 views
-1

我有一個字符串,例如如何填充字符串的長度?

s1 = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse egesta' 

s2 = 'Lorem' 

,我需要通過填充它「_」(或其它字符)到長度爲20的倍數,例如:

s1f = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse egesta_____' 

s2f = 'Lorem____________________' 

我會怎麼做?我知道我可以使用ljust,但我不知道如何計算其餘的長度。

+1

與'20只填寫了 - LEN(SF1)%20'字符。 'len(sf1)'會給你行中的字符數。 20%除以20%時會給你剩餘的字符,'20 - '會給你所需的額外字符數。 – sberry

+0

可能的重複[用空格填充python字符串?](http://stackoverflow.com/questions/5676646/fill-out-a-python-string-with-spaces) – Zizouz212

回答

-2

是這樣的嗎?

string_to_modify = "something" 
str_ = '' 
for i in range(20 - len(string_to_modify) % 20) 
    str_ = str_+"_" 
string_to_modify = string_to_modify + str_ 
+1

是的,謝謝你! – Nips

+1

您正在複製字符串的次數太多了。使用'ljust'或者至少'str_ ='_'* 20-len(str _)%20'。 – refi64

+0

@ kirbyfan64sos您錯誤地理解了我對缺乏清晰度的抱歉我編輯了我的答案以解釋我的意思。 – farhawa

4

有一個叫ljust應該是一個方法:

>>> s2f = 'Lorem' 
>>> s2f = s2f.ljust(len(s2f) + (20 - len(s2f) % 20), '_') 
>>> s2f 
'Lorem_______________' 

爲了減少在一行中的混亂,你只是做一個單獨的函數:

>>> def get_multiples(string): 
     return len(string) + (20 - len(string) % 20) 

然後,

>>> s2f = s2f.ljust(get_multiples(s2f), '_') 
+0

這應該是被接受的答案。 +1。 – refi64

+0

他想用「_」(或其他字符)填充長度,該長度是20的倍數,但這只是填充字符串,直到長度達到20爲止 – farhawa

+0

@farhawa謝謝,錯過了那部分。現在編輯。 – Zizouz212

0

他re是sberry的「20-len(sf1)%20」理念的一個功能。

def charfiller(the_string, filler_character, multiple_of): 
    extra_characters = multiple_of - len(the_string) % multiple_of 
    the_string = the_string + (filler_character * extra_characters) 
    return the_string 


s1 = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse  egesta' 
s2 = 'Lorem' 
s1_filled = charfiller(s1, '_', 20) 
s2_filled = charfiller(s2, '_', 20) 
print s1_filled 
print s2_filled 
print len(s1_filled) 
print len(s2_filled) 

Lorem存有悲坐阿梅德,consectetur adipiscing ELIT。 Suspendisse egesta_____ Lorem_______________