计算返回单、双字节字符混合字符串长度
字符串单字节长度
计算返回单、双字节字符混合字符串长度
#!/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 协议》,转载必须注明作者和本文链接