Как использовать .format с переменной вместо текста в python - PullRequest
0 голосов
/ 04 августа 2020
• 1000 формат не видит заполнители.

Буквально я мог бы сделать

var = """ this is a
{0} {1} """.format(colour, animal)

, который будет работать нормально.

Теперь я переместил этот шаблонный текст в текстовый файл, который я прочитал, но хочу заменить аргументы во время выполнения.

Как лучше всего добиться этого, пожалуйста?

Ответы [ 3 ]

0 голосов
/ 04 августа 2020

format - это метод строкового объекта, и он будет работать так же хорошо со строкой, содержащейся в переменной, как и с жестко заданной строковой константой.

Таким образом, вы можете иметь, например:

template.txt

this is a
{0} {1}

и используйте это, чтобы прочитать его и подставить значения:

with open("template.txt") as f:
    template = f.read().strip()

colour = "red"
animal = "lion"

print(template.format(colour, animal))

Дает:

this is a
red lion

Вы также можете используйте ключевые слова для замены, которые дадут вам больше гибкости в упорядочивании цвета и животного (или, действительно, для того, чтобы один и тот же знак появлялся несколько раз или не появлялся вообще).

Вот шаблон: template.txt

This is a {colour} {animal}

Замена с использованием ключевых слов:

with open("template.txt") as f:
    template = f.read().strip()

colour = "red"
animal = "lion"

print(template.format(colour=colour, animal=animal))

дает:

This is a red lion

Но теперь, в качестве примера, вот шаблон, который будет подходящим для языка Wel sh, где порядок будет меняться местами:

template.txt

{animal} {colour} ydy hon

Теперь замените аналогично:

print(template.format(colour="goch", animal="draig"))
draig goch ydy hon

Не имело значения, что в вашем вызове формата элементы были в другом порядке в коде, потому что они совпадали с релевантным Ключевые слова ant.

Опять же, это не отличается от того, что вы можете делать с жестко заданными строковыми константами.

0 голосов
/ 04 августа 2020
with open("test.txt") as f:
    var = f.read().format(colour, animal)
0 голосов
/ 04 августа 2020
var = """this is a {0} {1} """

print(var.format("red", "dog"))

...