【发布时间】:2020-05-16 01:29:24
【问题描述】:
我需要用 Python 中的另一个字符串替换 YAML 中出现的每个字符串。
name: responses
new:
sources:
- table: response
source: xxx
tier: raw
view: vresponses
columns:
- a
- b
- c
- d
- eff_dt
extracts:
- sql: >-
CREATE or REPLACE TEMPORARY VIEW sql1
AS
SELECT distinct
some_cols,
{{ place-holder }}
FROM
vresponse AS RES
inner JOIN tab2 AS SUR
ON RES.SrveyId = SUR.SrveyId
- sql: >-
CREATE or REPLACE TEMPORARY VIEW sql1
AS
SELECT distinct
some_cols2,
{{ place-holder }}
FROM
vresponse2 AS RES
inner JOIN tab3 AS SUR
ON RES.x = SUR.y
从上面的示例中,我想遍历所有出现的-sql key,并替换所有出现在-sql 键下的sql 语句中文本{{ place-holder }} 的所有出现,并将它们替换为新值。
我已经尝试过了,但导致以下错误:
>>> input_file = "my_file.yaml"
>>> data = yaml.load(open(input_file))
>>> i = 0
>>> for k, v in data['new']['extracts'][i]:
... val = v.replace('{{ place-holder }}', 'new_str')
... print(val)
... i = i + 1
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack
替换后,我想将内容转储回 yaml 格式。我是 Python 和 YAML 的新手。谁能帮忙。
谢谢
【问题讨论】:
标签: python python-3.x yaml