我正在学习python在线课程中关于open&读取文件。在一条代码线上发生故障
data = "{:^13} {:<11} {:<6}n"
获得的响应之一如下。然而,我仍然不清楚以下
- 在响应中,提到了
which will come at position of 13 , 11 and 6
位置是什么意思?它和索引相似吗?
-
符号
"^", "<" and {:}
代表什么? -
为什么使用eg{:^13}而不是str(data.format(rnd100009999(
澄清不清
Thank you for the post!
data = "{:^13} {:<11} {:<6}n" this will be printed as string which will be formatted using the random number between 10000 9999 , which will come at position of 13 , 11 and 6
Happy learning!
代码如下
from random import randint as rnd
memReg = 'members.txt'
exReg = 'inactive.txt'
fee =('yes','no')
def genFiles(current,old):
with open(current,'w+') as writefile:
writefile.write('Membership No Date Joined Active n')
data = "{:^13} {:<11} {:<6}n"
for rowno in range(20):
date = str(rnd(2015,2020))+ '-' + str(rnd(1,12))+'-'+str(rnd(1,25))
writefile.write(data.format(rnd(10000,99999),date,fee[rnd(0,1)]))
让我们尝试一些更简单的东西,并一步一步地将其拆开,看看为什么会发生这种情况:
data = "{:^13} {:<11} {:<6}n"
print(data.format(1,2,3))
>>> 1 2 3
>>>
符号":^">居中对齐值。
符号":<quot左对齐值。
我们能理解为什么字符串现在看起来像那样吗?对绝对:
>>> "{:^13}".format(1)
' 1 '
>>> len(' 1 ')
13
格式化后的字符串的第一部分有13个字符长,无论传递到其中的内容是什么,都以({:^13}
(为中心。
>>> "{:<11}".format(2)
'2 '
>>> len('2 ')
11
>>> "{:<6}".format(3)
'3 '
>>> len('3 ')
6
格式化字符串的第二部分长11个字符,第三部分长6个字符,因为我们在前面加了空格(请注意,它不一定是空格!您可以通过在<
符号之前这样写来选择将用于填充的字符:{:_<11}
->现在我们将在前面加_
(,直到字符串中有11个和6个字符分别地
我们可以通过将它们计算在一起来确认这就是正在发生的事情:13+11+6+2括号之间的空白+1新行=33
>>> len(data.format(1,2,3))
33
好吧,我们完全理解为什么字符串会被格式化,但现在你的问题是,为什么使用这种格式,而不是使用那种格式。Python确实提供了很多格式化数据的方法,但当谈到字符串.format()
方法时,我会向大家推荐一篇文章:
https://pyformat.info/
在这里,您会发现旧式格式化方法和.format()
方法之间有很多比较。并不是所有的事情都有可能,除此之外,还有很多不同之处。我认为你也应该能够在那里找到所有的答案。
最后但并非最不重要的是,@ShadowRanger已经为您提供了实际的文档,其中包含了有关格式的所有细微差别和细节;迷你语言";。虽然对初学者不太友好,但在试图理解某人的代码是如何工作的时,总是先阅读文档是一个好习惯。