计算返回单、双字节字符混合字符串长度

字符串单字节长度

计算返回单、双字节字符混合字符串长度

#!/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 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!