去除多余空格
本帖最后由 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) 不用编写那么长,活用split和join两个方法。
a=input("请随意输入带空格的字符串:")
b=' '.join(a.split())
print(b) lassiter 发表于 2022-10-9 00:03
不用编写那么长,活用split和join两个方法。
split学了经常用,join学了没想到这种用法
那么我的代码错在那里呢,还是想知道 看了半天终于发现你的代码问题了,第9、14行,应该是一个等号,你用了2个等号 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) 我看了好久,调试了n多次,结果竟然是这里的问题 临时号 发表于 2022-10-9 00:37
我看了好久,调试了n多次,结果竟然是这里的问题
辛苦了老哥,这种低级错误我也看着惭愧,而且我还是调试多次才复制过来的求助的,真的抱歉了 >>> import re
>>> str_ = 'aa bb cc dd ffff'
>>> pattern = r' +'
>>> re.sub(pattern, ' ', str_)
'aa bb cc dd ffff'
>>>
页:
[1]