#python #string #formatting
#python #строка #форматирование
Вопрос:
Мне нужно отформатировать массив в строку, однако строка подготовлена и сохранена заранее. По сути, у меня есть список строк, которые выглядят примерно так:
text = [
'Data Item 1: %.2f',
'Data Item 2: %.2f',
'Data Item 3: %.2f'
]
Затем этот список просматривается, и ему присваиваются данные, аналогичные этому:
for i in range(len(text)):
print(text[i] % data[i])
Это работает нормально, но теперь я хочу иметь возможность добавлять строку в мой текстовый список, который позже будет сопряжен с элементом списка, подобным этому:
text = [
'Data Item 1: %.2f',
'Data Item 2: %.2f',
'Data Item 3: %.2f',
'Num List: <FORMATTING NEEDED>'
]
data = [0.3, 2.1, 4.9, [1, 2, 3, 4]]
for i in range(len(text)):
print(text[i] % data[i])
Я хочу, чтобы это дало следующий результат:
Data Item 1: 0.30
Data Item 2: 2.10
Data Item 3: 4.90
Num List: 1,2,3,4
Самое близкое к тому, что я ищу, что я нашел до сих пор, выглядит так:
'Num List: [' ", ".join(['%.2f']*len(x)) "]'
Но у меня пока нет ‘x’. Мне нужно подготовить строку для списка, который нельзя использовать немедленно. Надеюсь, я правильно объяснил свою потребность.
Комментарии:
1. Если один из ответов сработал для вас, подумайте о том, чтобы пометить его как принятый.
Ответ №1:
Результат, который вы показываете по желанию, не содержит круглых скобок для списка, но в вашем коде попытки вы используете их, поэтому я предполагаю, что они в порядке.
В этом случае вы могли бы сделать что-то вроде:
print('Num List: %s' % [1,2,3,4])
который печатает:
Num list: [1, 2, 3, 4]
Ответ №2:
Я думаю, вы прошли большую часть пути, не могли бы вы просто превратить массив в строку, а затем включить ее в data
список?
выполнение этого:
l = [1,2,3,4]
l_string = ",".join(str(x) for x in l)
в результате получается строка, которая выглядит следующим образом:
'0,1,2,3,4'
тогда вы могли бы просто включить эту строку в data
, вот так:
[0.3, 2.1, 4.9, ",".join(str(x) for x in l)]
вы также можете обернуть это в функцию в зависимости от вашего приложения, возможно, путем проверки списков и преобразования их в строки. Тогда ваш test
будет выглядеть так:
text = [
'Data Item 1: %.2f',
'Data Item 2: %.2f',
'Data Item 3: %.2f',
'Num List: %s'
]