字符串对齐
使用 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.