首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python: Str Position?

Python: Str Position?
EN

Stack Overflow用户
提问于 2021-01-04 03:57:10
回答 1查看 112关注 0票数 1

我正在学习有关打开和阅读文件的python在线课程。偶然发现一条代码行

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))

不清楚澄清

代码语言:javascript
运行
复制
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!

代码如下所示:

代码语言:javascript
运行
复制
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)]))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-04 04:36:01

让我们尝试一些更简单的东西,一步一步地把它拆开,看看它为什么会发生:

代码语言:javascript
运行
复制
data = "{:^13} {:<11} {:<6}\n"
print(data.format(1,2,3))
>>>      1       2           3     

>>>
  1. 符号":^“中心-对齐值。
  2. 符号":<“左对齐该值。

我们能理解为什么这根绳子现在是这样的吗?是!绝对:

代码语言:javascript
运行
复制
>>> "{:^13}".format(1)
'      1      '
>>> len('      1      ')
13

格式化字符串的第一部分是13个字符,无论您传递到以它为中心的任何内容({:^13})。

代码语言:javascript
运行
复制
>>> "{:<11}".format(2)
'2          '
>>> len('2          ')
11
>>> "{:<6}".format(3)
'3     '
>>> len('3     ')
6

格式化字符串的第二部分是11个字符长,第三个部分是6个字符长,因为我们前面的白空间(注意,它不一定是白空间!您可以选择用于填充的字符,方法是在<符号之前写入它:{:<11}_ _-> now we would prepend_ _‘),直到字符串中分别有11个和6个字符为止。

我们可以通过将它们计算在一起来确认这一点:括号+1新行= 33之间的13 + 11 +6+2空格

代码语言:javascript
运行
复制
>>> len(data.format(1,2,3))
33

好的,我们完全理解为什么字符串是这样格式化的,但是现在来问一下为什么使用来格式化,而不是用来格式化。Python确实提供了大量格式化数据的方法,但是当谈到string .format()方法时,我推荐给每个人一篇文章:

https://pyformat.info/

在这里,您会发现旧的格式化方法和.format()方法之间有很多比较。并不是所有的事情都有可能,即使除此之外,也有很多不同之处。我想你也应该能找到所有的答案。

最后但并非最不重要的一点是,@阴影护林员已经向您提供了关于格式化“迷你语言”的所有细节和细节的实际文档。虽然不像初学者那样友好,但是在尝试理解某人的代码是如何工作的时候,总是先阅读文档是一个好习惯。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65557514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档