我有一个 .txt 文件,我读了它并希望使用这些值创建格式化字符串。第 3 列和第 4 列需要小数,最后一列需要百分号和 2 位小数。格式化的字符串将显示类似“公牛队的总上座率为 894659,平均上座率为 21,820,容量为 104.30%”
缩短的 .txt 文件包含以下几行:
1 Bulls 894659 21820 104.3 2 Cavaliers 843042 20562 100 3 Mavericks 825901 20143 104.9 4 Raptors 812863 19825 100.1 5 NY_Knicks 812292 19812 100
到目前为止,我的代码看起来像这样,并且它大部分工作,减去逗号和小数位。
file_1 = open ('basketball.txt', 'r') count = 0 list_1 = [ ] for line in file_1: count += 1 textline = line.strip() items = textline.split() list_1.append(items) print('Number of teams: ', count) for line in list_1: print ('Line: ', line) file_1.close() for line in list_1: #iterate over the lines of the file and print the lines with formatted strings a, b, c, d, e = line print (f'The overall attendance at the {b} game was {c}, average attendance was {d}, and the capacity was {e}%.')
非常感谢任何有关如何格式化代码以显示带逗号 (21820 ->21,828) 的数字和带有 2 位小数和百分号 (104.3 -> 104.30%) 的最后一列的帮助。
对于如何解决这个问题,您有一些选择。
由于您提供的代码已经使用 f 字符串,因此此解决方案应该适合您。对于阅读此处的其他人,这仅在您使用 Python 3 时才有效。
您可以在 f 字符串中进行字符串格式化,通过:在大括号内的变量名后面放置一个冒号来表示{},之后您可以使用所有常用的python 字符串格式化选项。
:
{}
因此,您只需更改其中一行代码即可完成此操作。您的打印行看起来像:
print(f'The overall attendance at the {b} game was {int(c):,}, average attendance was {int(d):,}, and the capacity was {float(e):.2f}%.')
变量被解释为:
{b}
b
{int(c):,}
{int(d):,}
c
d``:,
{float(e):.2f}
e``:.2f
string.format()
对于此处正在寻找 Python 2 友好解决方案的其他人,您可以将打印行更改为以下内容:
print("The overall attendance at the {} game was {:,}, average attendance was {:,}, and the capacity was {:.2f}%.".format(b, int(c), int(d), float(e)))
请注意,这两个选项使用相同的格式化语法,只是 f 字符串选项的好处是让您将变量名写在它出现在结果打印字符串中的正确位置。