求助:将文本文件单词按指定数量换行并以逗号分隔输出
解决单词格式化输出问题
我来帮你搞定这个需求!你想要把逐行排列的40个单词转换成逗号分隔的格式,并且每7个或10个单词就换行,对吧?先看看你的代码问题出在哪,再给你调整后的可行方案。
你的代码问题分析
- 你把所有单词用
comma.join(content)连成了一长串,但完全没处理分段换行的逻辑,所以自然不会按7个或10个单词换行; - 那个
if len(content)%7 ==0的判断没有实际作用——不管单词总数是否能被7整除,都需要拆分分段,而不是直接打印整串; - 你导入了
textwrap模块但没用到,这里其实不需要它,直接分组处理更简单。
修复后的代码方案
方案1:打印到屏幕(可切换7/10个单词换行)
# 修改这个数值,就能切换每7个或10个单词换行 words_per_line = 7 comma = ', ' with open('drop_words.txt', encoding='utf-8') as file: # 读取所有单词到列表,自动处理原文件的换行/空格 word_list = file.read().split() # 把单词列表按指定数量分组 grouped_words = [word_list[i:i+words_per_line] for i in range(0, len(word_list), words_per_line)] # 逐组转成逗号分隔的字符串并打印 for group in grouped_words: print(comma.join(group))
方案2:写入到新文件
如果需要输出到另一个文件,只需要稍作修改:
words_per_line = 10 # 改成7就是每7个单词换行 output_filename = 'formatted_words.txt' comma = ', ' # 同时打开输入文件和输出文件 with open('drop_words.txt', encoding='utf-8') as infile, open(output_filename, 'w', encoding='utf-8') as outfile: word_list = infile.read().split() grouped_words = [word_list[i:i+words_per_line] for i in range(0, len(word_list), words_per_line)] for group in grouped_words: line = comma.join(group) outfile.write(line + '\n') # 写入文件时手动添加换行符 print(f"格式化后的内容已写入 {output_filename}")
代码说明
- 用
file.read().split()可以稳妥地读取所有单词,不管原文件是逐行排列还是有其他空白字符; - 列表推导式
[word_list[i:i+words_per_line] ...]会把单词列表拆分成指定长度的子组,最后一组如果不足指定数量也会自动保留; - 每个子组用逗号连接成一行,完美实现你要的格式。
内容的提问来源于stack exchange,提问作者G. Trialonis
相关产品推荐
相关产品推荐

