Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中打印时的字符串对齐_Python_String_Formatting_Indentation_Text Alignment - Fatal编程技术网

在python中打印时的字符串对齐

在python中打印时的字符串对齐,python,string,formatting,indentation,text-alignment,Python,String,Formatting,Indentation,Text Alignment,我想这样输出文本: Якета : **************************** 1250.23 € Обувки за футбол : ********************** 912.30 € Екипи : ************** 513.45 € Топки : ************ 502.52 € T-SHIRTS : ********* 420.19 € 我如何使用占位符

我想这样输出文本:

Якета            : **************************** 1250.23 €
Обувки за футбол : ********************** 912.30 €
Екипи            : ************** 513.45 €
Топки            : ************ 502.52 €
T-SHIRTS         : ********* 420.19 €

我如何使用占位符将所有冒号缩进到最长字符串的长度?在这种情况下,
ббзббфббббб
,我会这样做(有点“粗俗”):

  • 获取最长的字符串
    longest=len(最长的字符串)
    。如果字符串在
    列表中
    最长=len(max(mylist,key=len))
  • 为所有字符串计算
    空格=最长-len(str)
  • 在字符串的每一端添加
    空格
    空格

    • 也许,最优雅的方法是使用
      格式
      方法。它允许轻松定义字符串将使用的空间:

      >>> name = 'Якета'
      >>> asterisks = '****************************'
      >>> price = 1250.23
      >>> print '{0:17}: {1} {2} €'.format(name, asterisks, price)
      Якета       : **************************** 1250.23 €
      
      如果您需要以编程方式定义填充大小(例如,动态接受较大的字符串而不是硬编码其大小),只需使用
      ljust

      >>> name = 'Якета'
      >>> asterisks = '****************************'
      >>> price = 1250.23
      >>> padding = 17
      >>> print '{0}: {1} {2} €'.format(name.ljust(padding), asterisks, price)
      Якета       : **************************** 1250.23 €
      
      考虑到最大字符串大小以前未知且脚本必须适应的情况,我们只需计算最大字符串大小并将其放入
      填充中

      >>> names = ['abc', 'defghijklm', 'op', 'q']
      >>> asterisks = '****************************'
      >>> price = 1250.23
      >>> padding = max(map(len, strings))
      >>> for name in names:
              print '{0}: {1} {2} €'.format(name.ljust(padding), asterisks, price)
      abc       : **************************** 1250.23 €
      defghijklm: **************************** 1250.23 €
      op        : **************************** 1250.23 €
      q         : **************************** 1250.23 €
      

      有一个非常类似的问题。

      获取字符串的
      len
      ,从最长字符串的
      len
      中减去它,然后在字符串的末尾添加那么多空格。谢谢,但我已经解决了这一问题。我的问题是在动态环境中使用这种方法。假设我们不知道要打印的最长字符串的长度,因此无法硬编码占位符{0:17}内的缩进。有没有嵌套的占位符选项可以用于这种情况?我的第二个示例就是这样做的。只要把你最长的字符串大小放入
      padding
      变量,一切都会好起来的。假设您有一个包含所有字符串的
      strings=['abc','defghijklm','op','q']
      列表。然后,可以使用<代码> pAd= max(map(LeN,string))/代码>来计算填充,这使得 Poad=10 。我刚刚更新了包含此情况的答案,AlxyType,您可以考虑动态创建占位符:<代码> MyPosithOrth=“{ 0:”+STR(max(map(LeN,string)))+'}。“然后调用
      myplaceholder.format(…)
      。我知道我已经使用这种格式制作了脚本,以ASCII格式输出表。我想到了这一点,但我认为python必须有更干净的东西可以使用。@Alex我明白了,这是我想到的第一件事-很容易想到、理解和实现:)谢谢。我将实施它,因为到目前为止,我想不出或找不到我更喜欢的东西。