用文件中的字符串替换python代码中的长字符串(保留占位符)

时间:2017-10-19 07:00:39

标签: python string python-2.7 file

我必须为一些必须包含长字符串的文本文件生成一个生成器,该字符串从一个文件到另一个文件有很多不同。我通过在其中包含占位符的DEFAULT_STRING来实现此目的。我想要做的是将文本放在文件中并保留功能(使用占位符)。有什么建议吗?

DEFAULT_STRING = """A very long {ph1} string with multiple {ph2} ......
that keeps on going {ph3} and I don't like this big string 
inside my code""".format(ph1 = self._first, ph2 = self._second, ph3 = self._third)

实际的字符串是100多行,因此更容易处理仅包含字符串的单独文件。

2 个答案:

答案 0 :(得分:1)

如果我正确理解您的问题,您可以将DEFAULT_STRING写入文件中。当您想要使用它来进行任何格式化时,您将读取该文件的第一行并在该字符串上调用格式,就像在您的示例中一样。

您可以将DEFAULT_STRING中的命名占位符替换为位置占位符(例如{0},{1}),也可以通过查找" {"之间的字符来解析字符串中的名称。和"}"并构建一个** kwargs字典,使用名称作为键和值来传递到.format()中。

答案 1 :(得分:0)

values = dict(ph1 = self._first, ph2 = self._second, ph3 = self._third)

with open('long_string.txt') as infile:
  with open('out.txt', 'w') as outfile:
    outfile.write(infile.read().format(**values))