Python: Str Position?



我正在学习python在线课程中关于open&读取文件。在一条代码线上发生故障

data = "{:^13} {:<11} {:<6}n"

获得的响应之一如下。然而,我仍然不清楚以下

  1. 在响应中,提到了which will come at position of 13 , 11 and 6

位置是什么意思?它和索引相似吗?

  1. 符号"^", "<" and {:}代表什么?

  2. 为什么使用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     
>>>
  1. 符号":^">居中对齐值。

  2. 符号":<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已经为您提供了实际的文档,其中包含了有关格式的所有细微差别和细节;迷你语言";。虽然对初学者不太友好,但在试图理解某人的代码是如何工作的时,总是先阅读文档是一个好习惯。

最新更新