Replace() 不适用于多行字符串和大括号
Replace() not working on multiline string and curly brackets
我正在尝试替换多行字符串中的一些值。为此,我执行以下步骤:
- 我定义了一个原始字符串,其中我稍后要自定义的值用大括号括起来。
- 我用我的自定义选项创建了一个字典。
- 我查看字典的键并使用 replace() 将它们替换为相应的值。
尽管(对我而言)它似乎有道理,但由于某种原因它不起作用。下面附上MWE:
customString = r'''%- Hello!
%- Axis limits
xmin= {xmin}, xmax= {xmax},
ymin= {ymin}, ymax= {ymax},
%- Axis labels
xlabel={xlabel},
ylabel={ylabel},
'''
tikzOptions = {'xmin': 0,
'xmax': 7.5,
'ymin': -100,
'ymax': -40,
'xlabel': '{Time (ns)}',
'ylabel': '{Amplitude (dB)}',}
for key in tikzOptions.keys():
searchKey = '{' + key + '}' # Defined key on dictionary tikzOptions
value = str(tikzOptions[key]) # Desire value for plotting
customString.replace(searchKey,value)
print(customString)
这段代码的结果应该是:
%- Hello!
%- Axis limits
xmin= 0, xmax= 7.5,
ymin= -100, ymax= -40,
%- Axis labels
xlabel=Time(ns),
ylabel=Amplitude (dB),
但我得到的输出与我定义的 customString 完全相同。你能帮帮我吗?
错误在这里:
customString.replace(searchKey,value)
Python 中的字符串是不可变的,因此 .replace
returns 一个新字符串。你想做的事:
customString = customString.replace(searchKey,value)
但是,由于您的格式也与 str.format
的格式相匹配,您可以简单地执行
result = customString.format(**tikzOptions)
一次完成。
我正在尝试替换多行字符串中的一些值。为此,我执行以下步骤:
- 我定义了一个原始字符串,其中我稍后要自定义的值用大括号括起来。
- 我用我的自定义选项创建了一个字典。
- 我查看字典的键并使用 replace() 将它们替换为相应的值。
尽管(对我而言)它似乎有道理,但由于某种原因它不起作用。下面附上MWE:
customString = r'''%- Hello!
%- Axis limits
xmin= {xmin}, xmax= {xmax},
ymin= {ymin}, ymax= {ymax},
%- Axis labels
xlabel={xlabel},
ylabel={ylabel},
'''
tikzOptions = {'xmin': 0,
'xmax': 7.5,
'ymin': -100,
'ymax': -40,
'xlabel': '{Time (ns)}',
'ylabel': '{Amplitude (dB)}',}
for key in tikzOptions.keys():
searchKey = '{' + key + '}' # Defined key on dictionary tikzOptions
value = str(tikzOptions[key]) # Desire value for plotting
customString.replace(searchKey,value)
print(customString)
这段代码的结果应该是:
%- Hello!
%- Axis limits
xmin= 0, xmax= 7.5,
ymin= -100, ymax= -40,
%- Axis labels
xlabel=Time(ns),
ylabel=Amplitude (dB),
但我得到的输出与我定义的 customString 完全相同。你能帮帮我吗?
错误在这里:
customString.replace(searchKey,value)
Python 中的字符串是不可变的,因此 .replace
returns 一个新字符串。你想做的事:
customString = customString.replace(searchKey,value)
但是,由于您的格式也与 str.format
的格式相匹配,您可以简单地执行
result = customString.format(**tikzOptions)
一次完成。