20.8.2. 使用技巧进阶二

如何拆分含多种分隔符的字符

#!/usr/bin/env python
# -*- coding:utf8 -*-
# auther; 18793
# Date:2019/8/18 22:45
# filename: 01.如何拆分含多种分隔符的字符串.py

s = 'ab;cd|efg|hi,jkl|mn\topq;rst,uvw\txyz'


# 第一种方式
def my_split(s, seps):
    res = [s]
    for sep in seps:
        t = []
        list(map(lambda ss: t.extend(ss.split(sep)), res))
        res = t
    return res


s1 = my_split(s, ',;|\t')
print(s1)  # ['ab', 'cd', 'efg', 'hi', 'jkl', 'mn', 'opq', 'rst', 'uvw', 'xyz']

# 第二种方式
import re

s2 = re.split('[,;|\t]+', s)
print(s2)  # ['ab', 'cd', 'efg', 'hi', 'jkl', 'mn', 'opq', 'rst', 'uvw', 'xyz']

如何调整字符串中文本的格式

#!/usr/bin/env python
# -*- coding:utf8 -*-
# auther; 18793
# Date:2019/8/18 22:49
# filename: 02.如何调整字符串中文本的格式.py
import re

# 调整时间显示的格式
s = "2019-08-15 23:23:12"

s1 = re.sub(r'(\d{4})-(\d{2})-(\d{2})',r'\2/\3/\1',s)
print(s1)       #08/15/2019 23:23:12

如何将多个小字符串拼接成一个大的字符串

#!/usr/bin/env python
# -*- coding:utf8 -*-
# auther; 18793
# Date:2019/8/18 22:52
# filename: 03.如何将多个小字符串拼接成一个大的字符串.py

l = ["<11>", "<22>", "<33>", "<44>", "<55>", "<66>", "<77>"]

# 第一种方式
s = ''
for x in l:
    s += x
print(s)  # <11><22><33><44><55><66><77>

# 第二种方式
s2 = ''.join(l)
print(s2)  # <11><22><33><44><55><66><77>

如何对字符串进行左, 右, 居中对齐

#!/usr/bin/env python
# -*- coding:utf8 -*-
# auther; 18793
# Date:2019/8/18 22:54
# filename: 04.如何对字符串进行左, 右, 居中对齐.py

s = 'abc'

print(s.ljust(10))  # abc
print(s.ljust(10, "*"))  # abc*******
print(s.rjust(10))  # abc
print(s.rjust(10, "*"))  # *******abc
print(s.center(10))  # abc
print(s.center(10, "*"))  # ***abc****

# 把字典以左对齐的形式打印出来
d = {
    "hujianli": "19940722",
    'name': 'xiaojian',
    'address': '北京朝阳区',
    'age': '20'
}

w = max(map(len, d.keys()))  # 计算所有2key中字符最长的是多少
print(w)        #8


for k, v in d.items():
    print(k.ljust(w), ":", v)

"""
hujianli : 19940722
name     : xiaojian
address  : 北京朝阳区
age      : 20
"""

如何去掉字符串中不需要的字符

#!/usr/bin/env python
# -*- coding:utf8 -*-
# auther; 18793
# Date:2019/8/18 22:58
# filename: 05.05.如何去掉字符串中不需要的字符.py

s = "    hujianli     "
print(s.strip())  # hujianli

print(s.lstrip())  # hujianli

print(s.rstrip())  # hujianli

s1 = '-=+hujianli0001-=-+'
print(s1.strip())  # -=+hujianli0001-=-+
print(s1.strip('-='))  # +hujianli0001-=-+
print(s1.strip("-=+"))  # hujianli0001

# 删除固定位置,用切片,去掉下面的冒号
s2 = 'abc:123'
s2 = s2[:3] + s2[4:]
print(s2)  # abc123

# replace
s3 = '  abc  123  '
s3 = s3.strip()
s3 = s3.replace(' ', '')
print(s3)  # abc123

# 正则表达式re.sub()
s4 = '  \t  abc  \t  123  \n  '
import re

s4 = re.sub('[ \t\n]', '', s4)
print(s4)  # abc123