String 带.format()的多行字符串缩进

String 带.format()的多行字符串缩进,string,python-3.x,format,String,Python 3.x,Format,我应该创建一个字符串格式的收据,然后将其传递回主程序,然后由主程序打印 因此,我有两个字符串,其中包含价格,\n在每个字符串之间: food_prices = "\n22.40\n13.40\n" drink_prices = "\n11.50\n6.90\n" 它们是从带有浮点值的列表中创建的——我曾尝试使用for循环来实现这一点,但从未实现;在收据字符串传递到主程序后,我得到的只是令人难以置信的错误打印 我正在尝试将它们格式化为.format,以便每个文件都打印在自己的一行上,因为\n,向

我应该创建一个字符串格式的收据,然后将其传递回主程序,然后由主程序打印

因此,我有两个字符串,其中包含价格,\n在每个字符串之间:

food_prices = "\n22.40\n13.40\n"
drink_prices = "\n11.50\n6.90\n"
它们是从带有浮点值的列表中创建的——我曾尝试使用for循环来实现这一点,但从未实现;在收据字符串传递到主程序后,我得到的只是令人难以置信的错误打印

我正在尝试将它们格式化为.format,以便每个文件都打印在自己的一行上,因为\n,向右缩进,有16个空间。输出应该是什么的示例:

1234567890123456 # For readability, ignore
Food:
           22.40
           13.40
Drinks:
           11.50
            6.90
------------------------------
Total      54.20
我所尝试的:

 receipt = (...
        "Food:\n"
        "{:>16}"
        "Drinks:\n"
        "{:>16}"
        "------------------------------\n"
        "{:>7.2f}"
        "Total {:>7.2f}\n").format(food_prices, drink_prices, total)
输出是什么样子的:

Food:
 12.4
5.43
7.65
Drinks:
   5.4
8.76
5.4
------------------------------
Total      45.04 

不过,缩进只对字符串中的单个价格\n0.00\n起作用。我不太确定这应该/可以怎么做。我已经参考了官方文档和政治公众人物,并做了一些谷歌搜索。

我将使用您的列表而不是字符串,因为字符串的格式不方便

执行此任务的2个选项。首先使用for循环在部分中构建字符串。第二种方法使用len来帮助创建完整的模式

food_prices = [22.40, 13.40]
drink_prices = [11.50, 6.90]

total = sum(food_prices + drink_prices)


# Option 1 (in parts)

summary = 'Food:\n'

for item in food_prices:
    summary += '{:>16.2f}\n'.format(item)

summary += 'Drinks:\n'

for item in drink_prices:
    summary += '{:>16.2f}\n'.format(item)

summary += '-' * 30 + '\nTotal {:>10.2f}\n'.format(total)

print(summary)


# Option 2 (all at once)

summary = ('Food:\n' + '{:>16.2f}\n' * len(food_prices) +
    'Drinks:\n' + '{:>16.2f}\n' * len(drink_prices) +
    '-' * 30 + '\nTotal {:>10.2f}\n'
    ).format(*food_prices, *drink_prices, total)

print(summary)
注意:使用“-”*30可以节省手动键入-30次的时间