python - 向右填充多行字符串

标签 python string python-2.7 padding

here 找到此代码片段后

'{0: <16}'.format('Hi')

我能够正确填充字符串 - 这就是我所追求的。 我已经编写了一个函数来处理多行字符串,但我感觉有一种更快、更 Pythonic 的方法: 字符串用“.”填充。只是作为一个例子。

#!/usr/bin/python

def r_pad_string (s):

  listy = s.splitlines()

  w = 0
  ss = ""

  for i in range(0, len(listy)):
    l = len(str(listy[i]))
    if  l > w:
      w = l

  for i in range(0, len(listy)):
    pad = str(listy[i]).ljust(w, ".")
    ss += pad + "\n"

  return  ss


myStr1 = "  ######\n"  \
         " ########\n" \
         "##  ##  ##\n" \
         "## ### ###\n" \
         "##########\n" \
         "##########\n" \
         "##  ##  ##\n" \
         "#   #   #"

myStr2 = """Spoons
  are
great!!!"""

print r_pad_string(myStr1)
print r_pad_string(myStr2)

最佳答案

def r_pad_string2(s, fillchar='.'):                    
    lines = s.splitlines()
    max_len = max(len(l) for l in lines)
    return '\n'.join(l.ljust(max_len, fillchar) for l in lines)

时间:

In [12]: %timeit r_pad_string(myStr1)
100000 loops, best of 3: 5.38 µs per loop

In [13]: %timeit r_pad_string2(myStr1)
100000 loops, best of 3: 3.43 µs per loop

In [14]: %timeit r_pad_string(myStr2)
100000 loops, best of 3: 2.48 µs per loop

In [15]: %timeit r_pad_string2(myStr2)
1000000 loops, best of 3: 1.9 µs per loop

所以速度并没有那么快,但是眼睛更舒服。

关于python - 向右填充多行字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37460100/

相关文章:

Java 选项卡 ("\t")无法使用 FileWriter

python - matplotlib:RuntimeError:Python 未作为框架安装

python - 从矩阵数据框中提取组合列表及其计数值?

java - 使用 python 的 gzip 时出现问题/"How do I know what compression is being used?"

python - 在python中使用rpy2将分位数输入ggplot geom_boxplot

python - 为什么 `item["错误“] : "message"` NOT a syntax error in python 3. 6?

c - 如何在 C 中从字符串中获取特定单词并消除其他单词

python - 用户配置文件 gmail api 中的历史记录 ID 是什么?

python - Python 中从逗号分隔的字符串中删除元素的有效方法

python - 如何在键不一致的字典列表中查找值