Python中如何用多字符填充实现类似ljust的左对齐功能?
用多字符模式填充字符串的解决方法
因为Python内置的ljust只支持单字符填充,要实现双字符(或多字符)模式填充,可以用以下两种方法:
方法一:手动生成填充字符串(无需额外模块)
先计算需要填充的字符数,再通过重复填充模式并截取对应长度来生成填充内容,最后拼接到原字符串后:
def ljust_multi(s, target_len, fill_pattern): str_len = len(s) if str_len >= target_len: return s needed = target_len - str_len # 生成足够多的填充模式,再截取需要的长度 fill_str = (fill_pattern * ((needed // len(fill_pattern)) + 1))[:needed] return s + fill_str
测试示例
# 示例1:原字符串长度34,填充到36位 print(ljust_multi("313841444634473732415a2d3347324631", 36, "20")) # 输出:313841444634473732415a2d334732463120 # 示例2:原字符串长度4,填充到12位 print(ljust_multi("ABCD", 12, "20")) # 输出:ABCD20202020
方法二:用迭代器循环填充(需导入itertools)
借助itertools.cycle循环迭代填充模式的字符,取够需要的数量后拼接:
from itertools import cycle def ljust_multi_cycle(s, target_len, fill_pattern): str_len = len(s) if str_len >= target_len: return s needed = target_len - str_len fill_iter = cycle(fill_pattern) fill_str = ''.join([next(fill_iter) for _ in range(needed)]) return s + fill_str
测试示例
print(ljust_multi_cycle("ABCD", 10, "20")) # 输出:ABCD202020
内容的提问来源于stack exchange,提问作者CTCL
相关产品推荐
相关产品推荐

