python - 如何将文本文件中的数据导入 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 列表中?谢谢!
解决方案
第一:你不想要二维列表;你想要一个简单的字符串字典到字符串列表。
此外,如评论中所建议的,如果您的格式灵活,请使用 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)
推荐阅读
- javascript - SAP B1,如何显示从 ItemImage 获取的图像?
- sql - 即使新的 SQL 查询在 Access 中工作,在 Excel 文件中更改数据库 SQL 连接也会中断
- dart - Dart 流错误与 .listen().onError().onDone()
- python - 在 n 维数组上使用带有 meshgrid 的 scipy interpn
- vim - 如何在 Vim 中将缩进转换为空格?
- python - 为什么 Power BI 和 Python 使用 Seaborn 显示不同的分布?
- pdf - 将纯文本文件转换为 PDF 时如何使“pandoc”使用特定字体?
- java - 如何从用户那里读取 10 个整数,并在不使用数组的情况下识别第二高的整数?
- javascript - 比较 NodeJs 和 Express 中的两个 JSON
- css - 将 WordPress Gutenberg 移植到独立的 React 组件 - CSS 样式未出现