計算返回單、雙位元組字元混合字串長度
#!/usr/bin/env python3
import re
p = re.compile('[^\x00-\xff]+') # 提取雙位元組字元的正則模板
# p = re.compile('[\x00-\xff]+') # 提取單位元組字元的正則模板
def realLength(s):
'''計算返回單、雙位元組混合字串的位元組長度,便於格式化輸出'''
dualByteNum = len(''.join(p.findall(s)))
singleByteNum = len(s) - dualByteNum
return (dualByteNum, singleByteNum, dualByteNum*2 + singleByteNum)
if __name__ == "__main__":
sample = '中文字元, english在這裡'
print(f"例1:樣本{sample!r}, 直接取字串長度: {len(sample)}; "
f"雙位元組長度{{}}, 單位元組長度{{}}, 總長度{{}}。"
f"\n".format(*realLength(sample))) # 用兩種格式化方法組合完成格式化
# 很好的用途在下面, 期望右對齊
print("例2: ")
src = ['abcde', "中文字串", 'abdcefghijk', "短中文", 'hun混he合']
for s in src:
print(f'{s:>20}') # 參差不齊
print()
for s in src:
cLength, _, _ = realLength(s)
print(f'{s:>{20-cLength}}') # f-string 還支援巢狀
TIPS: 在生成
.xls, .xlsx
等檔案時,可以通過這個函式計算單元格內容的位元組長度並據此調整列寬度。
本作品採用《CC 協議》,轉載必須註明作者和本文連結