5.字符串和文本(二)

5.字符串和文本(二)-四曲博客
5.字符串和文本(二)
此内容为免费阅读,请登录后查看
0
免费阅读

从字符串中去掉不需要的字符

使用strip()来去除字符串两边的字符

使用lstrip()来去除左边字符

使用rstrip()来去除右边的字符

s = ' hello,world,'

#去除空格
print(s.strip())

#去除右边的符号
print(s.rstrip(",").strip())

# hello,world,
# hello,world

文本过滤和清理

可以建立一个小型转换表,然后使用translate()方法

remap ={
    ord('\t'):' ',
    ord('\f'):' ',
    ord('\r'):' '
}

s = 'python\tis\tawesome\r\n'
s.translate(remap)

print(s)

# python  is      awesome

对齐文本字符串

对于基本的字符串对齐要求,可以使用字符串的ijust()rjust()center()

text = 'Hello World'
print(text.ljust(20))
print(text.rjust(20))
print(text.center(20))

print()

#可以使用符号进行填充
print(text.ljust(20,'='))
print(text.rjust(20,'='))
print(text.center(20,'='))

# Hello World
#          Hello World
#     Hello World

# Hello World=========
# =========Hello World
# ====Hello World=====

如果需要使用更多的字符串输出格式,可以使用format()函数

字符串连接及合并

如果想要将合并的字符串在一个序列或可迭代对象中,那么将它们合并起来的最快方法就是使用join()方法

parts =['Is','Chicago','Not','Chicago?']
print("".join(parts))

#使用生成器进行链接
print("".join(start for start in parts))

# IsChicagoNotChicago?
# IsChicagoNotChicago?

由于使用+号运算符每次都会产生一个临时的结果,因此效率较低。

给字符串中的变量名做插值处理

可以使用format()函数

s = '{name} has {n} message'
print(s.format(name="siqu",n=12))
#siqu has 12 message

可以使用format_map()vars()

  • vars()可以返回对象属性与属性值的映射值,如果括号当中没有对象,则指定当前调用位置的属性和属性值
  • format_map函数可以将映射替换变量名
s = '{name} has {n} message'
name ="siqu"
n = 2
print(s.format_map(vars()))

# siqu has 2 message
#作用于实例类上

class Info:
    def __init__(self,name,n):
        self.name=name
        self.n = n

a = Info("siqu",45)
s = '{name} has {n} message'

print(s.format_map(vars(a)))

# siqu has 45 message

formatformatmap的一个缺点就是没法优雅地处理缺少某个值的情况,可以单独的定义一个带有_missing\()方法的字典类

class safesub(dict):
    def __missing__(self,key):
        return '{'+ key +'}'
s = '{name} has {n} message'
name = "siqu"
n = 80
print(s.format_map(safesub(vars())))

# siqu has 80 message

以固定的列数重新格式化文本

import textwrap

s = 'Look into my eyes, look into my eyes,the eyes, the eyes,'

#第二个参数为每行的宽度
print(textwrap.fill(s, 10))

# Look into
# my eyes,
# look into
# my
# eyes,the
# eyes, the
# eyes,

在字节串上执行文本操作

字节串支持大多数和文本字符串一样的内建操作

data = b'Hello World'
print(data[:5])

print(data.startswith(b'Hello'))
print(data.split())
print(data.replace(b'Hello',b'Hello world'))

# b'Hello'
# True
# [b'Hello', b'World']
# b'Hello world World'

但是会有一些区别

a ='Hello World'

print(a[0])

b = b'Aello World'
print(b[0])

# H
# 65

对于字节串的打印结果,可以将其解码为字节串

b = b'Hello'
print(b.decode('ascii'))

# Hello
© 版权声明
THE END
喜欢就支持以下吧
点赞0
分享
评论 抢沙发
四曲的头像-四曲博客

昵称

取消
昵称表情代码图片