字符串格式无法按预期工作
string formatting not working as expected
我正在尝试格式化字符串以符合以下方式打印:
Payday 1000.00
groceries -50.00
dinner out wit -175.00
bacon, eggs, & -50.00
total: 725
为此,我使用了字符串格式。
左侧列 ('description') 的最大长度不能超过 23 个字符,右侧列 ('amount') 的最大长度不能超过 7 个字符。
这是我目前拥有的代码:
def __str__(self):
balance = 0
transactions = []
nl = '\n'
header = self.category.center(30, '*')
for item in self.ledger:
transaction = item['amount']
balance += transaction
item['amount'] = '{:.2f}'.format(item['amount'])
description = '{:.<23}'.format(item['description'])
amount = '{:.>7}'.format(item['amount'])
transactions.append(f'{description}{amount}')
total = f'Total: {balance}'
return f"{header}\n{nl.join(tuple(transactions))}\n{total}"
根据我上面的内容,大部分情况下一切正常,但是 none 我的字符串受到最大长度的限制,我不知道为什么。
下面是我 运行 这段代码的结果:
*************Food*************
Payday.................1000.00
groceries...............-50.00
dinner out with friends-175.00
bacon, eggs, vegetables, fruits and salad for breakfast.-50.00
Total: 725
如能提供任何关于为什么会发生这种情况的帮助,我们将不胜感激。
如果您只想截断列的最大长度,您可以在追加它们之前使用字符串切片:
description = description[:23]
amount = amount[:7]
transactions.append(f'{description}{amount}')
如果切片超过字符串的长度,Python 只是 returns 整个字符串,所以即使字符串比您的最大长度短,这也会起作用。
我正在尝试格式化字符串以符合以下方式打印:
Payday 1000.00
groceries -50.00
dinner out wit -175.00
bacon, eggs, & -50.00
total: 725
为此,我使用了字符串格式。 左侧列 ('description') 的最大长度不能超过 23 个字符,右侧列 ('amount') 的最大长度不能超过 7 个字符。
这是我目前拥有的代码:
def __str__(self):
balance = 0
transactions = []
nl = '\n'
header = self.category.center(30, '*')
for item in self.ledger:
transaction = item['amount']
balance += transaction
item['amount'] = '{:.2f}'.format(item['amount'])
description = '{:.<23}'.format(item['description'])
amount = '{:.>7}'.format(item['amount'])
transactions.append(f'{description}{amount}')
total = f'Total: {balance}'
return f"{header}\n{nl.join(tuple(transactions))}\n{total}"
根据我上面的内容,大部分情况下一切正常,但是 none 我的字符串受到最大长度的限制,我不知道为什么。
下面是我 运行 这段代码的结果:
*************Food*************
Payday.................1000.00
groceries...............-50.00
dinner out with friends-175.00
bacon, eggs, vegetables, fruits and salad for breakfast.-50.00
Total: 725
如能提供任何关于为什么会发生这种情况的帮助,我们将不胜感激。
如果您只想截断列的最大长度,您可以在追加它们之前使用字符串切片:
description = description[:23]
amount = amount[:7]
transactions.append(f'{description}{amount}')
如果切片超过字符串的长度,Python 只是 returns 整个字符串,所以即使字符串比您的最大长度短,这也会起作用。