You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 12:17:44