天天看點

python字元串長度補齊_python用指定字元串指定長度進行字元串右補齊。

字元串右補齊,根本指定的length長度補齊字元串str1到src中.

用函數實作:函數名:strfill(src,length,str1):

輸入參數:src原字元串,length是目标字元串長度,str1用來填充的字元串.

示例:

strfill(“ch”,7,“inese”)=> “chinese”

strfill(“abcd”,11,“23”) => “abcd2323232”

strfill(“abc”,5,“0”)=>“abd00”

對于這個題目開始想到while,for循環等,但是不能處理所有的情況,就是函數不通用。後來請教了“先生”原來是如此簡單,兩行代碼搞定。

import math

#lg表示目标字元串的長度

def strfill(src,lg,str1):

#math.ceil是向上取整,這個下面會具體介紹

n = math.ceil((lg-len(src))/len(str1))

newstr = src + str1 * n

return newstr[0:lg]

strfill("abcd",10,"7878") => "abcd787878"

1.這裡介紹下,python的向上取整,向下取整,四舍五入,和int。

1.1.python的四舍五入用的round,這個大家可能都比較熟悉

print(round(26/10)) => 3

print(round(21/10)) => 2

1.2.int就是直接取整

print(int(26/10)) =>2

print(int(21/10)) => 2

1.3.對于向上取整和向下取整就要用到math這個子產品了

1.3.1、向上取整

import math

print(math.ceil(26/10)) =>3

print(math.ceil(21/10)) =>3

1.3.2、向下取整

import math

print(math.floor(26/10)) =>2

print(math.floor(21/10)) =>2

備注: 這裡說的兩行代碼就是:

n = math.ceil((lg-len(src))/len(str1))

newstr = src + str1 * n

此處用的了向上取整。

當然此題解法很多種,越是簡單越好:

def strfill(src,length,str):

#定義一個空的字元串

tem=''

for i in range(length-len(src)):

#i%len(str)取餘(其實就是取字元串對應的索引)

tem=tem+str[i%len(str)]

print(src+tem)

strfill('abcd',11,'100')

如果是補充字元是單個字元,這裡就比較簡單了,可以用ljust,rjust.

1、Python ljust()方法

描述

Python ljust() 方法傳回一個原字元串左對齊,并使用空格填充至指定長度的新字元串。如果指定的長度小于原字元串的長度則傳回原字元串。

文法

ljust()方法文法:

str.ljust(width[, fillchar])

參數

width – 指定填充指定字元後中字元串的總長度.

fillchar – 填充的字元,預設為空格。

src = "list"

print(src.ljust(10,"a")) =>"listaaaaaa"

2、Python rjust()方法

描述

Python rjust() 傳回一個原字元串右對齊,并使用空格填充至長度 width 的新字元串。如果指定的長度小于字元串的長度則傳回原字元串。

文法

rjust()方法文法:

str.rjust(width[, fillchar])

參數

width – 指定填充指定字元後中字元串的總長度.

fillchar – 填充的字元,預設為空格。

src = "list"

print(src.rjust(10,"a")) =>"aaaaaalist"