Python作业问题:split(', ')带空格时无响应的报错排查
解决带空格逗号分割的问题
嘿,我完全懂你遇到的这个坑——当输入里的逗号前面出现空格时(比如"橘子 , 西瓜"),你用, 去判断和分割根本抓不到这个分隔符,程序自然没法返回正确结果。你的代码只覆盖了逗号后带空格的情况,纯逗号或者逗号前带空格的场景都没处理到,这才导致了问题。
给你两个简单靠谱的解决方案,能轻松搞定各种逗号加空格的组合:
方法1:统一清理空格后分割
先把所有逗号周围的空格统一处理成纯逗号,再分割,最后给每个元素去掉前后多余空格:
string = input('Enter input string: \n') while ',' not in string: print('Error: No comma in string.') string = input('Enter input string: \n') while string != 'q': # 把逗号前后的空格都替换掉,统一成纯逗号分隔 cleaned_str = string.replace(' ,', ',').replace(', ', ',') # 分割后给每个元素去除前后空格 names = [name.strip() for name in cleaned_str.split(',')] print('First word:', names[0]) print('Second word:', names[1]) # 获取下一轮输入,同时保留错误判断 string = input('Enter input string: \n') while ',' not in string and string != 'q': print('Error: No comma in string.') string = input('Enter input string: \n')
方法2:用正则表达式灵活分割
如果想更优雅地处理任意数量的空格(比如多个连续空格),可以用re.split匹配逗号和前后任意空白字符:
import re string = input('Enter input string: \n') while ',' not in string: print('Error: No comma in string.') string = input('Enter input string: \n') while string != 'q': # 匹配逗号前后任意数量的空白字符(包括0个) names = [name.strip() for name in re.split(r'\s*,\s*', string)] print('First word:', names[0]) print('Second word:', names[1]) # 获取下一轮输入,完善退出逻辑 string = input('Enter input string: \n') while ',' not in string and string != 'q': print('Error: No comma in string.') string = input('Enter input string: \n')
为什么这两种方法能解决问题?
- 方法1通过替换操作,把
"a ,b"、"a, b"、"a , b"这些不规则格式统一成"a,b",再分割后strip,就能得到干净的两个元素 - 方法2用正则
\s*,\s*直接匹配逗号前后所有空白字符,不管是1个还是多个空格,都能精准分割,适用性更强
我还帮你完善了输入循环的逻辑,现在输入q可以直接退出,不会再触发错误提示啦。
内容的提问来源于stack exchange,提问作者Joshua Shook
相关产品推荐
相关产品推荐

