如何用Python将字典键按指定行列位置写入文本文件
解决字典字符按坐标写入文本文件的问题
这个需求本质是要把字符按指定的行号和位置“填”到文本里,其他位置留空对吧?我来给你一步步实现:
首先得明确几个关键点:
- 你的行号和位置都是从1开始计数的,但Python的列表索引是从0开始的,所以后面要做转换
- 字符串在Python里是不可变的,直接修改某位置字符会报错,所以用列表来存储每行内容更方便
完整实现代码
d={'a': [(2, 2)], ' ': [(1, 6), (2, 4)], 'c': [(2, 8)], 'e': [(1, 2), (2, 6), (2, 11)], 'd': [(1, 11)], 'i': [(2, 3)], 'h': [(1, 1), (2, 1)], 'm': [(2, 10)], 'l': [(1, 3), (1, 4), (1, 10), (2, 7)], 'o': [(1, 5), (1, 8), (2, 9)], 'r': [(1, 9)], 'w': [(1, 7), (2, 5)]} # 1. 先确定需要多少行,每行最长需要多少个字符 all_line_numbers = [] all_positions = [] for coords_list in d.values(): for line_no, pos in coords_list: all_line_numbers.append(line_no) all_positions.append(pos) max_line_count = max(all_line_numbers) max_char_count = max(all_positions) # 2. 初始化空白“画布”:每行用列表存满空格,方便修改 text_lines = [[' '] * max_char_count for _ in range(max_line_count)] # 3. 把每个字符填充到对应的位置 for char, coords_list in d.items(): for line_no, pos in coords_list: # 转换为Python的0-based索引 line_index = line_no - 1 pos_index = pos - 1 text_lines[line_index][pos_index] = char # 4. 写入文件 # 注意路径前加r,避免转义字符出错 with open(r"C:\Users\Desktop\hellotext.txt", "w") as f: for line in text_lines: # 把列表转成字符串,加上换行符写入 f.write(''.join(line) + '\n')
关键细节解释
- 初始化空白行:先遍历所有坐标,找到最大的行号和位置号,这样能确保我们的“画布”足够大,不会漏掉任何字符
- 用列表存储行内容:因为列表是可变类型,可以直接通过索引修改指定位置的元素,比字符串操作高效得多
- 路径加r:Windows路径里的
\会被当成转义字符,加r表示原始字符串,能避免解析错误 - 索引转换:把你传入的行号和位置都减1,对应到Python列表的0起始索引,这样才能正确定位到目标位置
运行这段代码后,你的hellotext.txt里就会出现按要求排列的字符啦!
内容的提问来源于stack exchange,提问作者gowthami
相关产品推荐
相关产品推荐

