You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中使用split函数后如何添加空格?不用replace()的实现问题

问题分析与解决

第二段代码输出无空格的原因

你的第二段代码逻辑存在明显问题:

  1. 第一个循环中,string.split()按空格拆分出单词列表,但你直接将每个单词(或替换后的单词)拼接到rev中,没有在单词之间添加空格,这一步结束后rev已经是无空格的单词拼接结果。
  2. 第二个循环遍历原字符串的每个字符,遇到空格就往rev末尾追加空格——相当于把所有空格都放在了整个字符串的最后,而非单词之间,所以最终输出的单词部分仍然是连在一起的,空格全在末尾(可能你没注意到这部分)。

正确的字符串拼接实现(不使用replace())

不需要单独循环加空格,在拼接每个单词时同步添加空格即可,最后去掉末尾多余的空格:

string = 'You are my sunshine, you are my everything.'
repstr = 'are'
repwth = 'were'

rev = ''
for a in string.split():
    # 建议用==精准匹配,原代码的in会误判包含are的单词(比如area)
    if a == repstr:
        rev += repwth + ' '
    else:
        rev += a + ' '

# 移除最后一个多余的空格
rev = rev.rstrip()

print(f'The output string: {rev}')

更高效的写法(推荐用join拼接字符串,避免多次字符串拷贝):

string = 'You are my sunshine, you are my everything.'
repstr = 'are'
repwth = 'were'

# 用列表推导式生成替换后的单词列表
words = [repwth if word == repstr else word for word in string.split()]
# 用空格连接所有单词
rev = ' '.join(words)

print(f'The output string: {rev}')

关于f-string中的空格

f-string仅负责格式化输出,空格问题本质是rev变量本身是否包含正确的空格。只要rev里的单词之间有空格,直接在f-string中输出{rev}就会显示正确格式,不需要额外在f-string里做处理。

内容的提问来源于stack exchange,提问作者Arnu C.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 08:07:18