使用itertools生成组合:多文件写入及换行空格问题求助
解决方案
修改后的完整代码
import itertools # 避免使用Python内置关键字list作为变量名 names = ['Mark', 'Jones', 'Albert', 'Mary', 'Bob'] combs = itertools.combinations_with_replacement(names, 5) for index, item in enumerate(combs): # 计算当前文件编号:每10个组合写入一个文件 file_num = (index // 10) + 1 # 将组合元素用空格拼接并添加换行符 line = ' '.join(item) + '\n' print(line.strip()) # 打印时去掉末尾换行符,保持整洁 # 打开对应编号的文件,追加写入 with open(f'output{file_num}.txt', 'a', encoding='utf-8') as f: f.write(line)
问题1:输出格式修正
- 原代码用
f.writelines(item)会直接把元组里的字符串无间隔拼接,导致单词连在一起且无换行。 - 解决方式:用
' '.join(item)把组合内的单词用空格分隔,再加'\n'实现每行一个组合,最后用f.write()写入整行内容。
问题2:每10个组合写入独立文件
- 通过
enumerate(combs)获取每个组合的索引(从0开始),用(index // 10) + 1计算对应文件编号:索引0-9对应output1.txt,10-19对应output2.txt,以此类推。 - 每次迭代根据计算出的
file_num打开对应文件,追加写入当前组合内容。
额外优化
- 把变量名
list改为names,避免和Python内置的list类型冲突,提升代码可读性。 - 打开文件时指定
encoding='utf-8',避免不同环境下的编码问题。
内容的提问来源于stack exchange,提问作者Amr
相关产品推荐
相关产品推荐

