首页 > 解决方案 > 如何将文本文件中的数据导入 Python 中的二维列表?

问题描述

我试图为 DND 类和子类制作一个随机生成器。我尝试制作一个如下所示的文本文件:

Barbarian
  Ancestral Guardian
  Battle Rager
  Beast
  Berserker
  Storm Herald
  Totem Warrior
  Wild Magic
  Zealot
Bard
  Creation
  Eloquence
  Glamour
  Lore
  Spirits
  Swords
  Valor
  Whispers

通常我会将数据编码到这样的列表中:

backgrounds = {}
with open("./Data/backgrounds.txt") as text:
  backgrounds = text.readlines()
text.close()

无论如何,它是否可以读取这些数据,例如野蛮人战斗狂暴者将是位置 (0,1) 而吟游诗人魅力将是 (1, 2)?还是有更好的方法来格式化数据,以便可以将其放入此 2D 列表中?谢谢!

标签: pythonlist

解决方案


第一:你不想要二维列表;你想要一个简单的字符串字典到字符串列表。

此外,如评论中所建议的,如果您的格式灵活,请使用 JSON 或 XML 而不是纯文本文件。如果您的格式不灵活,则以下方法可以解决问题:

from pprint import pprint
from typing import Dict, List

classes: Dict[str, List[str]] = {}

with open('./Data/classes.txt') as f:
    for line in f:
        if line.startswith(' '):
            current_classes.append(line.strip())
        else:
            current_classes = classes.setdefault(line.rstrip(), [])


pprint(skills)

推荐阅读