当前位置:首页>python>Python字符串拼接与重复——连接与复制

Python字符串拼接与重复——连接与复制

  • 2026-10-06 20:40:21
Python字符串拼接与重复——连接与复制

一、什么是字符串拼接与重复?

  • • 字符串拼接:将两个或多个字符串连接成一个新字符串。
  • • 字符串重复:将一个字符串重复多次,生成一个新字符串。

Python 提供了简单直观的操作符来实现这两种操作:+ 用于拼接,* 用于重复。

# 拼接
greeting = "你好" + " " + "世界"
print(greeting)  # 你好 世界

# 重复
line = "-" * 20
print(line)      # --------------------

二、字符串拼接(+ 操作符)

2.1 基本拼接

使用 + 可以将多个字符串连接在一起。

first_name = "张"
last_name = "三"
full_name = first_name + last_name
print(full_name)  # 张三

# 可以连续拼接多个
message = "Python" + " " + "is" + " " + "awesome"
print(message)    # Python is awesome

2.2 字符串与数字不能直接拼接

age = 25
# print("年龄:" + age)  # TypeError: can only concatenate str (not "int") to str

# 必须先将数字转为字符串
print("年龄:" + str(age))  # 年龄:25

2.3 使用 f-string 进行拼接(推荐)

虽然 f-string 主要用于格式化,但也可以用来拼接,且会自动处理类型转换。

name = "小明"
age = 18
message = f"姓名:{name},年龄:{age}"
print(message)  # 姓名:小明,年龄:18

2.4 使用 str.join() 高效拼接多个字符串

当需要拼接多个字符串(尤其是列表中的字符串)时,join() 比循环使用 + 更高效。

words = ["Hello", "World", "Python"]
sentence = " ".join(words)
print(sentence)  # Hello World Python

# 用逗号连接
tags = ["python", "编程", "教程"]
result = ",".join(tags)
print(result)    # python,编程,教程

三、字符串重复(* 操作符)

3.1 基本重复

使用 * 可以将一个字符串重复指定的次数。

word = "Ha"
print(word * 3)  # HaHaHa

# 常用于打印分隔线
print("-" * 40)  # ----------------------------------------

3.2 重复次数为 0 或负数

  • • 次数为 0 时,得到空字符串。
  • • 次数为负数时,得到空字符串(Python 3 中为负数视为 0)。
print("abc" * 0)   # (空字符串)
print("abc" * -2)  # (空字符串)

3.3 重复次数为浮点数

重复次数必须是整数,如果提供浮点数会引发 TypeError。

# print("abc" * 2.5)  # TypeError: can't multiply sequence by non-int of type 'float'

四、拼接与重复的底层原理

  • • 不可变性:字符串是不可变对象。每次使用 + 或 * 都会创建一个新的字符串对象,原字符串不变。
  • • 效率:在循环中大量使用 + 拼接会导致性能下降(因为每次都要创建新字符串)。此时应使用列表收集字符串,最后用 join()。
# 低效方式
result = ""
for i inrange(1000):
    result += str(i)   # 每次循环都创建新字符串

# 高效方式
parts = []
for i inrange(1000):
    parts.append(str(i))
result = "".join(parts)

五、实战案例

案例1:生成分隔线

defprint_separator(char="-", length=50):
print(char * length)

print_separator()           # --------------------------------------------------
print_separator("*", 30)    # ******************************

案例2:构建查询字符串

base_url = "https://api.example.com/search"
params = ["q=python", "page=1", "sort=desc"]
query_string = "&".join(params)
url = base_url + "?" + query_string
print(url)  # https://api.example.com/search?q=python&page=1&sort=desc

案例3:格式化表格行

defprint_table_row(columns, widths):
    row = "|".join(col.ljust(width) for col, width inzip(columns, widths))
print(row)

headers = ["姓名", "年龄", "城市"]
widths = [10, 5, 10]
print_table_row(headers, widths)  # |姓名       |年龄  |城市      |

案例4:生成重复图案

defdiamond(n):
for i inrange(1, n+1):
print(" " * (n-i) + "*" * (2*i-1))
for i inrange(n-1, 0, -1):
print(" " * (n-i) + "*" * (2*i-1))

diamond(5)

案例5:字符串脱敏

id_card = "110101199001011234"
# 只显示前4位和后4位,中间用 * 代替
masked = id_card[:4] + "*" * 8 + id_card[-4:]
print(masked)  # 1101********1234

六、注意事项

  1. 1. 类型必须一致:+ 只能用于字符串与字符串之间,不能与数字等其他类型直接拼接。需要时用 str() 转换。
  2. 2. 重复次数必须是整数:* 要求次数为整数,浮点数会报错。
  3. 3. 避免在循环中用 + 大量拼接:会导致性能问题,改用 join()。
  4. 4. 字符串不可变:所有拼接/重复操作都会产生新字符串,原字符串不受影响。
  5. 5. 空字符串与 None:None 不能直接拼接,需先转为字符串。

七、总结

操作
运算符/方法
说明
拼接
+
连接多个字符串,生成新字符串
重复
*
将字符串重复指定次数
高效拼接
str.join()
用分隔符连接可迭代对象中的字符串
格式化拼接
f-string / format()
推荐用于变量插入

掌握字符串拼接与重复,是处理文本数据的基础。合理选择方法能让代码更简洁、高效。

最新文章

随机文章