如何修改Python代码输出完整单词而非首字母并按指定规则排序
解决思路与完整代码
咱们先梳理你现有代码的核心问题:你只提取了每个单词的首字母来排序,所以得到的是首字母列表,既没处理完整单词,也没做去重操作。接下来一步步修改,每一步都讲得明明白白:
步骤1:安全读取文件中的所有单词
用with语句打开文件是最稳妥的方式,它会自动帮你关闭文件,不用手动写close(),避免忘记关文件导致的问题:
# 以只读模式打开文件 with open("Words.txt", 'r') as file_words: words_list = [] # 逐行读取文件内容 for line in file_words: # 把每行按空格分割成单个单词,逐个加入列表 for word in line.split(): words_list.append(word)
步骤2:提取唯一单词
文件里可能存在重复单词,咱们用**集合(set)**来去重——集合的特性就是内部不会有重复元素。之后再把集合转回列表,方便后续排序:
# 列表转集合去重,再转回列表 unique_words = list(set(words_list))
如果需要保留单词第一次出现的顺序(题目没要求的话可跳过),可以用这种更直观的写法:
unique_words = [] for word in words_list: if word not in unique_words: unique_words.append(word)
步骤3:按要求排序
题目要求大写单词优先于小写(比如The排在the前面),其实Python的字符串默认排序刚好符合这个规则:大写字母的ASCII码范围是65-90,小写字母是97-122,大写整体比小写的数值小,所以直接用sort()就能实现需求:
# 对唯一单词列表进行排序 unique_words.sort()
完整程序代码
把上面的步骤整合起来,就是完整的可运行代码:
# 读取文件并收集所有单词 with open("Words.txt", 'r') as file_words: words_list = [] for line in file_words: for word in line.split(): words_list.append(word) # 去重得到唯一单词集合 unique_words = list(set(words_list)) # 按要求排序 unique_words.sort() # 输出最终结果 print(unique_words)
结果验证
用你提供的测试文本The quick brown fox jumps over the lazy dog运行程序,会输出:['The', 'brown', 'dog', 'fox', 'jumps', 'lazy', 'over', 'quick', 'the']
完全符合你的期望输出。
额外小技巧
如果文件里的单词带标点(比如dog.),可以用word.strip('.,!?')去掉单词首尾的标点符号,处理更干净:
# 修改读取单词的代码,添加标点处理 for word in line.split(): # 去掉首尾的常见标点 clean_word = word.strip('.,!?') words_list.append(clean_word)
内容的提问来源于stack exchange,提问作者Spudnick9
相关产品推荐
相关产品推荐

