python数据处理小技巧-2

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/willba/article/details/82988365

1,拆分含有多种分隔符的字符串

import re
s = 'sdjjg,jsa|jjalg\tjljl.ljei,jks;dji'
#方法:使用s.split(), 分割单个符合

#使用正则表达式的re.split()方法,一次性拆分字符串,使用+号表示分割连续多个
newStr = re.split(r"[,|.;\t]+",s)
print(newStr)
#['sdjjg', 'jsa', 'jjalg', 'jljl', 'ljei', 'jks', 'dji']

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

#方法1:迭代列表,连续使用"+" 操作依次拼接每个字符串
#方法2:使用str.join(),更加快速的拼接列表中的每个字符串
str = "a"
strs = "b"
strr = "c"
listSTR = [str,strr,strs]
newStr = str+strs+strr
print(newStr)
oneStr = "".join(listSTR)
print(oneStr)
#abc

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

#方法1:使用字符串的str.ljust(),str.rjust(),str.center()进行左右,居中对齐
#其方法所带的2个参数意思分别为:最终字符串的宽度 以及需要填充的字符串

#方法2:使用format()方法,传递类似的'<20','>20','^20'参数完成同样的任务
#  其中<20表示左对齐 并且宽度位20

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

#方法1:
str = "   abc   123  "
#去掉左右2边的空格
newStr = str.strip()
print (newStr)
#abc   123
# 去掉左边或者右边的字符
#str.lstrip()  str.rstrip()

#去掉左右2边的特殊符号
oneStr = "++++adv---"
twoStr = oneStr.strip("+-")
print(twoStr)
#adv

#方法2:删除单个固定位置的字符,可以使用切片+拼接的方式
threeStr = "abc:123"
fourStr = threeStr[:3]+threeStr[4:]
print(fourStr)
#abc123

# 方法3:字符串的replace()方法或正则表达式re.sub()删除任意位置字符
sss = "\tabc\t123\txyz\topq"
#将\t用空字符串替换
newsss = sss.replace("\t","")
print(newsss)
#abc123xyzopq

#利用re.sub替换多个字符串
abcsss = "\tabc\t123\txyz\topq\ndf"
import re
newaass = re.sub("[\t\n]","",abcsss)
print(newaass)
#abc123xyzopqdf

#方法4:字符串translate()方法,可以同时删除多种不同的字符

newFiveStr = abcsss.translate(["\t\n"])
print(newFiveStr)

5,判断是否已某某结尾或者开头 以及 改变字符串中的文本格式

#判断字符串a是否以b开头或者结尾
#使用字符串的str.startswith()和endwith()方法
#注意多个匹配时,使用元组

str = ["a.py","b.py","c.sh","d.txt"]
oneStr = ""
#取出其中以sh和txt结尾的
for s in str:
    if s.endswith((".sh",".txt")):
        oneStr += s
print(oneStr)
#c.sh   d.txt

#如何调整字符串中文本的格式
#使用正则表达式re.sub()方法做字符串替换,利用正则表达式的捕获组
#捕获每个部分内容,在替换字符串中调整各个捕获组的顺序
newStr = "2016-05-23"
#\d{}表示字符串  r""表示原始字符串   \2表示取第一个 /表示分割
Ustr = re.sub("(\d{4})-(\d{2})-(\d{2})",r"\2/\3/\1",newStr)
print(Ustr)
#05/23/2016
#使用标签占位符
newUstRT =  re.sub("(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})",r"\g<month>/\g<day>/\g<year>",newStr)
print(newUstRT)
#05/23/2016

6,设置文件的缓冲及 访问文件的状态

#文件的缓冲行为分为:全缓冲,行缓冲,无缓冲
#全缓冲:open函数的buffering设置为大于1的整数n,n为缓冲区大小
#行缓冲:open函数的buffering设置为1
#无缓冲:open函数的buffering设置为0

#如何访问文件的状态
#1,系统调用:标准库中os模块下的三个系统调用stat,fstat,lstat获取文件状态
#2,快捷函数,标准库中os.path下一些函数,使用起来更加简洁
#如os.path.isdir(), os.path.isfile,os.path.islink(判断是否是文字链接)

猜你喜欢

转载自blog.csdn.net/willba/article/details/82988365