【发布时间】:2019-09-24 16:13:55
【问题描述】:
我的 YAML 数据库:
left:
- title: Active Indicative
fill: "#cb202c"
groups:
- "Present | dūc[ō] | dūc[is] | dūc[it] | dūc[imus] | dūc[itis] | dūc[unt]"
我的 Python 代码:
import io
import yaml
with open("C:/Users/colin/Desktop/LBot/latin3_2.yaml", 'r', encoding="utf8") as f:
doc = yaml.safe_load(f)
txt = doc["left"][1]["groups"][1]
print(txt)
目前我的输出是Present | dūc[ō] | dūc[is] | dūc[it] | dūc[imus] | dūc[itis] | dūc[unt],但我希望输出是ō、is、it 或imus。这在 PyYaml 中是否可行,如果可以,我将如何实现它?提前致谢。
【问题讨论】:
-
从
txt提取[ ]里面的文字怎么样? -
我该怎么做?
-
这根本不是 YAML 特有的——毕竟,您已经从较大的结构中提取了要拆分的字符串;它是 YAML 中的单个字符串,因此在 Python 中将其转换为单个字符串是 YAML 解析器的职责。如果您只是将字符串
'Present | dūc[ō] | dūc[is] | dūc[it] | dūc[imus] | dūc[itis] | dūc[unt]'作为输入,而将 YAML 部分完全排除在外,那么您仍然会遇到完全相同的问题(但混合的不相关/复杂因素更少)。 -
...关于这一点,请注意minimal reproducible example 指南——我们确实要求最少个问题,尽可能简化,同时仍然允许复制和测试手头的问题。
-
...也就是说,您确定要在索引时使用
[1]s 而不是[0]s?请记住,[1]是列表中的 second 元素;[0]是第一个。