python字符串处理技巧

1. 调整字符串中文本的格式

"""
把"yyyy-mm-dd" 改为 "yyyy/mm/dd"
解决方法:
使用正则表达式re.sub()方法做字符串替换,利用正则表达式的捕获组(加括号),
抓获每个部分内容,在替换字符串中调整各个捕获组的顺序

re.sub('正则表达式', '(使用原始字符串,转义)组1\组2\...', 文本)
参数2:月/日/年的形式输出。
"""
# log = open('text.log').read()

str = "2017-09-27"
import re
print re.sub('(\d{4})-(\d{2})-(\d{2})', r'\2/\3/\1', str)
# 09/27/2017
print re.sub('(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})', r'\g<month>/\g<day>/\g<year>', log)

2. 将多个小字符串拼接成大字符串

方法一 : 使用 + 拼接两个字符串

s1 = 'abcdefgh'
s2 = 'dimples54'
print str.__add__(s1, s2)   # 等同于 s1 + s2

方法二 : 使用 join

# a. 以;连接  ====  dimples;54;lh
print ''.join(['dimples', '54', 'lh'])
print ''.join(list)


l = ['abc', 123, 45, 'dimples']
# 推荐使用生成器表达式
print ''.join(str(x) for x in l)

3. 对字符串进行左、右、居中对齐

方法一:
s = 'abc'

print format(s, '<20')
print format(s, '>20')
print format(s, '^20')
"""
<20 : 左对齐
>20 : 右对齐
^20 :居中
ljust(长度, 以什么形式填充 )
"""
方法二(推荐):
d = {'Name': 'dimples',
     'Age': 24,
     'Class': 'First'}

# 获取键的最大长度
w = max(map(len, d.keys()))

for k in d:
    print k.ljust(w), ":", d[k]

输出:

Age   : 24
Name  : dimples
Class : First

4. 去掉字符串中不需要的字符

"""
strip : 不指定默认去除空格
"""
1. 去掉两端
a = ' 111  com '
print a.strip()
print a.rstrip()
2.去除 : (利用切片)
a2 = 'aaa:123'
print a2[:3] + a2[4:]
3. 去掉 \t \r

去掉 \t

a3 = '\thello\tdimples\t\taaa'
print a3.replace('\t', '')

去掉 \t \r

a4 = '\thello\rdimples\r\taaa'
import re
print re.sub('[\t\r]', '', a4)
4. 去掉多种不同字符
"""
str.translate(): 把一个字符映射到另一个字符上去
unicode.translate() 
"""
s = 'abc123454321xyz'
import string
print string.maketrans('abcxyz', 'xyzabc')
# 完成映射表
print s.translate(string.maketrans('abcxyz', 'xyzabc'))


ss = 'abc\rdefg\n1234\t'
# 去掉'\t\r\n',删除操作只要赋值None就行了
print ss.translate(None, '\t\r\n')


sss = u'nǐ shì hǎo de'
print sss.translate({0x0301: None})
# 去掉四个声调
print sss.translate(dict.fromkeys([0x0301, 0x030c, 0x0304, 0x0300]))

猜你喜欢

转载自blog.csdn.net/weixin_37887248/article/details/80727938
今日推荐