在下面的代码中,structList是一个结构列表,每个key
是模板中的一个字符串,value
是替代。
%ParamStruct{default: "Greater London", description: "Region",
key: "ca_cert_subj_state", label: "State/County", order: 99, required: false,
value: "Greater London"}
因此,在上面的key
为ca_cert_subj_state
且价值为Greater London
这是替换的字符串:
sslCmd = """
openssl req -x509 -new -nodes -sha256 \
-key {{key-file-pass}}.key \
-days 3650 \
-out {{key-file-pass}}.pem \
-subj ""\
/C={{ca_cert_subj_country}}\
/ST={{ca_cert_subj_state}}\
/L={{ca_cert_subj_location}}\
/O={{ca_cert_subj_organization}}\
/OU={{ca_cert_subj_org_unit}}\
/CN={{ca_cert_subj_common_name}}\
/emailAddress={{ca_cert_email}}\
"""
Enum.reduce(structList, sslCmd, fn(x, sslCmd) -> sslCmd = String.replace(sslCmd, "{{#{x.key}}}", x.value)
end)
这段代码应该累积更改sslCmd中的字符串的结果,但显然不起作用。我不确定它应如何递归或迭代。有什么想法吗?
答案 0 :(得分:1)
我认为两个名为from pydub import AudioSegment
sound = AudioSegment.from_file(…)
def speed_change(sound, speed=1.0):
# Manually override the frame_rate. This tells the computer how many
# samples to play per second
sound_with_altered_frame_rate = sound._spawn(sound.raw_data, overrides={
"frame_rate": int(sound.frame_rate * speed)
})
# convert the sound with altered frame rate to a standard frame rate
# so that regular playback programs will work right. They often only
# know how to play audio at standard frame rate (like 44.1k)
return sound_with_altered_frame_rate.set_frame_rate(sound.frame_rate)
slow_sound = speed_change(sound, 0.75)
fast_sound = speed_change(sound, 2.0)
的不同值之间存在混淆。此外,sslCmd
功能分配也是多余的。
以下是工作代码示例:
sslCmd
请注意,defmodule ParamStruct do
defstruct default: nil, description: nil, key: nil, label: nil, order: nil, required: false, value: nil
end
structList = [
%ParamStruct{default: "Greater London", description: "Region",
key: "ca_cert_subj_state", label: "State/County", order: 99, required: false,
value: "Greater London"},
%ParamStruct{key: "ca_cert_subj_country", value: "United Kingdom"}
]
sslCmd = """
openssl req -x509 -new -nodes -sha256 \
-key {{key-file-pass}}.key \
-days 3650 \
-out {{key-file-pass}}.pem \
-subj ""\
/C={{ca_cert_subj_country}}\
/ST={{ca_cert_subj_state}}\
/L={{ca_cert_subj_location}}\
/O={{ca_cert_subj_organization}}\
/OU={{ca_cert_subj_org_unit}}\
/CN={{ca_cert_subj_common_name}}\
/emailAddress={{ca_cert_email}}\
"""
sslCmd = Enum.reduce(structList, sslCmd, fn(x, acc) ->
String.replace(acc, "{{#{x.key}}}", x.value) end)
会重新分配给sslCmd
的结果。