如何从python中的正则表达式创建嵌套字典?

2024-05-29 05:43:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经创建了一个正则表达式来搜索文本块并提取两个内容。我的目标是创建包含以下信息的CSV(或Excel文件):

  1. 一组四位数的代码
  2. 匹配的法术效果集

我创建了我的正则表达式,经过测试,它成功地将我需要的所有相关信息提取到一个巨大的文本块中。最初,我尝试通过迭代创建一个字典,如下所示:

WildMagic = {0000: "Target's head turns into a watermelon", 0001: "Target's head turns into a cucumber",...Number: "Effect Text"}

然而,当我将其写入CSV时,我得到了两个长行,一个包含所有4位代码,另一个包含所有4位代码 具有所有的效果。我可以在Excel中修复它,但这并不是本练习的真正目标。经过一些阅读,我认为最好创建一个字典字典,这样在创建CSV时,我可以使用数字和效果标签为我的CSV创建标题

我当前的代码如下所示:

    WildMagic = {}
for effect in textRegex.findall(str(text.read())):
    WildMagic[effect]["item"]=effect[1]
    WildMagic[effect]["value"]=effect[3]

当我草拟代码时,我的想法是,这段代码将创建字典,然后遍历文本块中的每一项。对于每个数字和效果,它将创建一个字典条目,如下所示:

{1:{"item":NUMBERS, "value":SPELL_EFFECT}, 2:{"item":NUMBERS, "value":SPELL_EFFECT}...}

这个循环能够打印每个数字、效果对,所以我知道我遗漏了一些东西。感谢您的帮助。谢谢

编辑:用于写入以下CSV的代码:

with open("WildMagicCSV.csv", "w") as CSVfile:
    file = csv.DictWriter(CSVfile,WildMagic.keys())
    file.writeheader()
    file.writerow(WildMagic)

编辑2:正在读入词典的文本如下所示。我在上面描述的初始字典中也给出了一个例子。输入如下所示:

2642 Huge volumes of ectoplasm ooze from the caster's nostrils
2643 Icy winds buffet the caster for 2d8-1 days
2644 If alive, caster is totally healed in each of the next 1d6 hours

有10000个条目


Tags: csvthe代码文本目标字典value数字
1条回答
网友
1楼 · 发布于 2024-05-29 05:43:12

首先,如果要保持4位数,则应该考虑^ {CD1>}作为字符串。我假设所有数字都是字符串->'0000'

WildMagic

WildMagic = {'0000': "Target's head turns into a watermelon", '0001': "Target's head turns into a cucumber"}
wild_magic = [{'id': k, 'text': v} for k, v in WildMagic.items()]
# output
[{'text': "Target's head turns into a watermelon", 'id': '0000'}, {'text': "Target's head turns into a cucumber", 'id': '0001'}]

一旦到了那里,就可以使用csv库中的^{}

import csv

with open('result_file.csv', 'w') as _f:
    fieldnames = wild_magic[0].keys()
    writer = csv.DictWriter(_f, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerows(wild_magic)

相关问题 更多 >

    热门问题