字串對齊方法,自用,綜合, newrlcjust

2021-10-24 21:11:30 字數 3143 閱讀 6034

#

# 純英文, 純中文, 英中混合字串組成的列表(list)內容進行對齊: 右, 左, 中

# 匯入後, 執行 chn_en_alignment.test() 檢視如何使用

# 匯入後, 執行 chn_en_alignment.newrlcjust(listchk, ttllength, direction ='r', fillwith = '0')

# 或 import chn_en_alignment.newrlcjust as rlcjust, 再按照 rlcjust('上述引數順序') 執行

# v1, 20201016

## data for test

list1=

['abc'

,'a'

,'abcded'

,'aa'

]list2=

['中芯'

,'台積電'

,'華為科技'

]list3=

['nxp'

,'中芯'

,'台積電'

]list4=

['nxp'

,'中芯'

,'huawei科技'

]list5=

['123'

,'中"芯"'

,'華hua為wei'

]usage=

'''usage:

newrlcjust(listchk, ttllength, direction ='r', fillwith = '0')

listchk: 字串元素 list, 待檢查

ttllength: 整數, list中所有字串對齊的寬度要求,

ttllength: 數字採用ttllength 與 list中字元轉最大長度 的最大者

direction: r-right, l-left, c-center, 預設 r

fillwith: 用什麼填充空位(如果有), 預設 0 (零), 暫不支援非英文或非單位元組字元'''

# chn =2, en=1, return additional len

defgetlen

(strchk)

:# get total length, chn calculated as 2, en as 1

strlen =

0for letter in strchk:

# print(letter, flush=true)

iford

(letter)

>

255:

strlen +=

2else

: strlen +=

1return strlen

defnewrlcjust

(listchk, ttllength, direction =

'r', fillwith =

'0')

:# listchk: list with elements to be aligned;

# ttllength: total length you see after output;

# direction, default as 'r', one of the three 'r', or 'l', or 'c',

# fillwith, default as '0';

listchklenmax=

max(getlen(x)

for x in listchk)

for strchk in listchk:

difflength =

0if ttllength > listchklenmax:

listchklenmax = ttllength

ttl = listchklenmax -

(getlen(strchk)

-len

(strchk)

)if direction ==

'r':

print

(strchk.rjust(ttl, fillwith)

)elif direction ==

'l':

print

(strchk.ljust(ttl, fillwith)

)else

:print

(strchk.center(ttl, fillwith)

)def

test()

:print

('\n中文計位2個寬度, 英文計位1個寬度.'

)print

('len(str)把中、英文的單個部分,均計位長度 1'

)print

(usage)

print

("*"*66

,'\n'

)print

('following are examples: \n'

) i_sequence =

0for lst in

[list1, list2, list3, list4, list5]

:print

('lst:'

,lst)

direction=

['r'

,'l'

,'c'

][i_sequence]

print

("example as: newrlcjust(lst, ttllength=1, direction ='"

+direction +

"', fillwith = '0')"

) newrlcjust(lst, ttllength=

1, direction =direction, fillwith =

'0')

print

('\n'

) i_sequence +=

1 i_sequence = i_sequence %

3if __name__ ==

'__main__'

:# newrlcjust(list4, 20, direction ='r', fillwith = '…')

# fill的 … ,中文輸入法下 shift + 6, 再backspace一次. powershell下無法輸入

test(

)

擴充套件字串左右對齊方法

net自帶的string.padright 方法按照msdn的說明是 左對齊此字串中的字元,在右邊用空格或指定的 unicode 字元填充以達到指定的總長度。實際使用中卻發現問題 對於我們中文使用者來說,雙位元組的漢字和單位元組的字元同時處理是不可避免的,這時候此方法是不能實現其所謂的對齊效果的 為...

字串的綜合練習

先判斷第乙個字元是否為字母或者下劃線 如果是,繼續判斷 如果不是,直接報錯 依次判斷除了第乙個字元以外的其他字元,判度是否為字母 數字或者下劃線 回答正確 right 1 num 1 elif c exit print exit break else print 回答錯誤 num 1 if num ...

字串的對齊 python

根據cookbook進行整理 a hello world b a.ljust 20 預設為填充空格,將長度擴充套件至20 print b hello world c a.ljust 20,在字串中填充 將長度擴充套件至20,並將原字串左對齊 print c hello world a hello w...