HOWTO · Python
在 Python 中重复字符串 N 次
了解如何在 Python 中将字符串重复固定的次数,以及如何构建达到指定字符长度的字符串。
本页内容
在 Python 中,将字符串乘以整数即可按固定次数重复整个字符串。若要生成指定字符长度的字符串,可以先重复足够多次,再对结果切片。这两种方法适用于不同需求:第一种保留每个完整副本,第二种可能在某个副本中途结束。
在 Python 中使用 * 运算符重复字符串 N 次
知道需要多少个完整副本时,可以使用 * 运算符。结果是一个新字符串,其中原文本按顺序重复排列。下面是一个简单示例:
print("ha" * 3)
hahaha
输出为 hahaha。乘以 0 会得到空字符串。重复次数为负数时也会得到空字符串;如果应用应拒绝这类输入,请在相乘前验证次数。重复次数应为整数。
如果副本之间需要分隔符,可以对重复后的序列调用 join()。例如,", ".join(["ha"] * 3) 会在副本之间插入逗号和空格,生成 ha, ha, ha。分隔符会放在各个元素之间;单独使用 * 只会将副本直接连接起来。对于通常的固定次数重复任务,字符串乘法是最直接的选择。
在 Python 中将字符串重复到指定长度
指定目标长度时,结果的最后一个副本可以只包含部分内容。将源字符串重复足够多次,再把结果切片到所需字符数。下面的辅助函数会拒绝负数目标长度;如果源字符串为空,它也会提示无法生成正长度的结果:
def repeat_to_length(text, target_length):
if target_length < 0:
raise ValueError("target_length must be nonnegative")
if not text and target_length > 0:
raise ValueError("text must not be empty for a positive target length")
if target_length == 0:
return ""
copies = (target_length + len(text) - 1) // len(text)
return (text * copies)[:target_length]
result = repeat_to_length("abc", 8)
print(result)
abcabcab
对于示例中的输入,输出为 abcabcab:两个完整副本,再加上下一个副本的前两个字符。向上取整除法表达式用于计算所需的副本数,切片则确保结果长度恰好符合要求。
目标长度为 0 时会返回空字符串。源字符串为空时,只能生成目标长度为 0 的结果;如果目标长度为正数,辅助函数会引发 ValueError。目标长度为负数时也会引发 ValueError,以免调用者悄悄得到容易误解的结果。如果应用需要采用其他规则,请在使用该辅助函数前调整这些检查。