字符串与文本05-字符串对齐 / 合并拼接字符串 / 字符串中插入变量

字符串对齐

  • 使用 ljust() , rjust() 和 center()
text = 'Hello World'

#左对齐、右对齐、居中
print(text.ljust(20))    # "Hello World         "
print(text.rjust(20))    # "         Hello World"
print(text.center(20))   # "    Hello World     "

#所有这些方法都能接受一个可选的填充字符
print(text.rjust(20,'='))    # '=========Hello World'
print(text.center(20,'*'))   # '****Hello World*****'


  • 使用 format()

函数 format() 同样可以用来很容易的对齐字符串。你要做的就是使用 【<】,【>】 或者【ˆ】 字符后面紧跟一个指定的宽度。

text = 'Hello World'

#左对齐、右对齐、居中
print(format(text, '>20'))    # "         Hello World"
print(format(text, '<20'))    # "Hello World         "
print(format(text, '^20'))    # "    Hello World     "

#format()也能接收填充字符
print(format(text, '=>20s'))  # '=========Hello World'
print(format(text, '*^20s'))  # '****Hello World*****'>

format() 函数的一个好处是它不仅适用于字符串。它可以用来格式化任何值,使得它非常的通用。比如,你可以用它来格式化数字

x = 1.2345
print(format(x, '>10'))      # "    1.2345"
print(format(x, '^10.2f'))   # "   1.23   "

合并拼接字符串


  • join()

想要合并的字符串是在一个序列或者 iterable 中,那么最快的方式就是使用 join() 方法。比如:

words = ['金庸','小说','超级','好看']
print(' '.join(words))   # "金庸 小说 超级 好看"
print('-'.join(words))   # "金庸-小说-超级-好看"
print(''.join(words))    # ""金庸小说超级好看
  • 使用 "+" 号
a = 'I love'
b = 'you'
c = a + ' '+ b  
print(c)         # "I love you"

如果你想在源码中将两个字面字符串合并起来,你只需要简单的将它们放到一起,
不需要用加号 (+)。

a = 'Hello' 'World'
print(a)     #HelloWorld

TIPS:当我们使用加号 (+) 操作符去连接大量的字符串的时候是非常低效率的,因为加号连接会引起内存复制以及垃圾回收操作。特别的,你永远都不应像下面这样写字符串连接代码:

words = ['金庸','小说','超级','好看']

# 糟糕的做法
s = ''
for i in words:
    s += i
print(s)                               #金庸小说超级好看

'''这种写法会比使用 join() 方法运行的要慢一些,因为每一次执行 += 操
作的时候会创建一个新的字符串对象。你最好是先收集所有的字符串片段然后再将它们连接起来。'''

#应该改成用 join()+生成器表达式更优
print(''.join(i for i in words))       #金庸小说超级好看

同样还得注意不必要的字符串连接操作。有时候程序员在没有必要做连接操作的时
候仍然多此一举。比如在打印的时候:

print(a + ':' + b + ':' + c)  # Ugly
print(':'.join([a, b, c]))    # Still ugly
print(a, b, c, sep=':')       # Better

字符串中插入变量

  • 使用 format()
s = '{name} has {n} messages.'
print(s.format(name='bill', n=37))   #'bill has 37 messages.
  • 结合使用 format_map() 和 vars()
name = 'bill'
n = 37
print(s.format_map(vars()))    #'bill has 37 messages.

猜你喜欢

转载自blog.csdn.net/xiangchi7/article/details/82443517
今日推荐