Python开发:去除句子元音并保留单个元音字符的问题排查
修复Python代码:保留单个元音字符,移除单词中的其他元音
先聊聊你现有代码的问题所在:
- 处理多字符单词时,直接遍历整个原始字符串替换元音,这会把所有元音(包括单个单词里的)都删掉,完全没区分单个元音单词的情况
- 拼接结果的逻辑混乱,
list2只收集了单个字符的单词但没加空格,最后直接和被修改后的data拼接,导致内容重复或遗漏
正确的思路应该是逐个处理每个单词:
- 把输入字符串按空格拆分成单词列表
- 对每个单词分别处理:
- 如果单词长度为1:直接保留(不管是不是元音,既符合“保留单个元音字符”的要求,非元音单个字符本来也无需删除)
- 如果单词长度大于1:过滤掉其中所有元音字符
- 把处理后的所有单词用空格拼接成最终字符串
下面是修改后的代码:
vowels = {'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'} # 用集合查询效率更高,用元组也能正常运行 def sms_encoding(data): words = data.split() processed_words = [] for word in words: if len(word) == 1: processed_words.append(word) else: # 过滤掉单词内的所有元音字符 filtered_word = ''.join([char for char in word if char not in vowels]) processed_words.append(filtered_word) # 用空格拼接所有处理后的单词 return ' '.join(processed_words) data = "a Have a nice day" print(sms_encoding(data)) # 输出:a Hv a nc dy
测试一下,输入"a Have a nice day"会得到正确的输出a Hv a nc dy——完美符合需求:保留了单个的a,同时移除了多字符单词里的元音(比如Have变成Hv,nice变成nc)。
内容的提问来源于stack exchange,提问作者Agilan Adalarasan
相关产品推荐
相关产品推荐

