鱼C论坛

 找回密码
 立即注册
查看: 2918|回复: 7

[已解决]去除多余空格

[复制链接]
发表于 2022-10-8 23:45:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 jcpython2 于 2022-10-8 23:51 编辑

输入多空格字符串,过滤多余空格,只留下一个空格

输入
aa bb     cc     dd     ffff
输出
aa bb cc dd ffff



解题法应该是有很多方法的,但请先指出我的代码的错误,因为我只学到字符串处理阶段


我的代码,打什么输出什么

思路是在循环中用j=0 或者 j=1判断前面是否有过空格
a = list(input())
b = ''
j = 0

#j =0 则本次循环未曾检测到空格,输出一个空格。j=1则已经输出过空格,跳过。输出过非空格元素后重置j
for i in a:
    if i.isspace() == True and j == 0: #如果i为空格 且上衣循环未为空(j =0),j == 1表示已经输出过一次空格
        b += i
        j == 1
    elif i.isspace() == True and j == 1: #i为空格 j=1则已经输出过空格,跳过合并
        pass
    else:                        #不为空格,直接合并,并且重置j==0,后续可加空格
        b += i
        j == 0
print(b)
最佳答案
2022-10-9 00:36:11
a = list(input())
b = ''
j = 0

#j =0 则本次循环未曾检测到空格,输出一个空格。j=1则已经输出过空格,跳过。输出过非空格元素后重置j
for i in a:
    if i.isspace() == True and j == 0: #如果i为空格 且上衣循环未为空(j =0),j == 1表示已经输出过一次空格
        b += i
        j = 1  # 谁告诉你赋值用==的
    elif i.isspace() == True and j == 1: #i为空格 j=1则已经输出过空格,跳过合并
        pass
    else:                        #不为空格,直接合并,并且重置j==0,后续可加空格
        b += i
        j = 0  # 谁告诉你赋值用==的
print(b)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-9 00:03:19 | 显示全部楼层
不用编写那么长,活用split和join两个方法。
a=input("请随意输入带空格的字符串:")
b=' '.join(a.split())

print(b)

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
jcpython2 + 1 + 1 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-9 00:11:47 | 显示全部楼层
lassiter 发表于 2022-10-9 00:03
不用编写那么长,活用split和join两个方法。

split学了经常用,join学了没想到这种用法

那么我的代码错在那里呢,还是想知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-9 00:34:30 | 显示全部楼层
看了半天终于发现你的代码问题了,第9、14行,应该是一个等号,你用了2个等号
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-9 00:36:11 | 显示全部楼层    本楼为最佳答案   
a = list(input())
b = ''
j = 0

#j =0 则本次循环未曾检测到空格,输出一个空格。j=1则已经输出过空格,跳过。输出过非空格元素后重置j
for i in a:
    if i.isspace() == True and j == 0: #如果i为空格 且上衣循环未为空(j =0),j == 1表示已经输出过一次空格
        b += i
        j = 1  # 谁告诉你赋值用==的
    elif i.isspace() == True and j == 1: #i为空格 j=1则已经输出过空格,跳过合并
        pass
    else:                        #不为空格,直接合并,并且重置j==0,后续可加空格
        b += i
        j = 0  # 谁告诉你赋值用==的
print(b)

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
jcpython2 + 1 + 1 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-9 00:37:53 | 显示全部楼层
我看了好久,调试了n多次,结果竟然是这里的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-9 00:59:03 | 显示全部楼层
临时号 发表于 2022-10-9 00:37
我看了好久,调试了n多次,结果竟然是这里的问题

辛苦了老哥,这种低级错误我也看着惭愧,而且我还是调试多次才复制过来的求助的,真的抱歉了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-9 09:27:00 | 显示全部楼层
>>> import re
>>> str_ = 'aa bb     cc     dd     ffff'
>>> pattern = r' +'
>>> re.sub(pattern, ' ', str_)
'aa bb cc dd ffff'
>>>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-14 09:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表