python常用文本处理方法小结

A

B

C

1 迭代器计数’ 'collections.Counter()

collections.Counter()是一个计数器,可以用来计数一个迭代器(字符串,列表,set)中每个字符出现的次数

    a = [1,2,3,4,4,5,6,6,'hello']
    b = [434]
    c= 'hewlkewklxc'
    print(Counter(a))  # Counter({4: 2, 6: 2, 1: 1, 2: 1, 3: 1, 5: 1, 'hello': 1})
    print(Counter(b))  # Counter({43: 1})
    print(Counter(c))  # Counter({'e': 2, 'w': 2, 'l': 2, 'k': 2, 'h': 1, 'x': 1, 'c': 1})
    print(Counter(a)-Counter(b))  # Counter({4: 1, 6: 2, 1: 1, 2: 1, 3: 1, 5: 1, 'hello': 1})

看起来Counter生成的是一个字典,但其实,他还有一些字典没有的功能,比如可以进行加减(普通字典不能进行加减),加法的话就是将来个计数器记的个数取并集,而减法很特殊,Counter(a)-Counter(b)的逻辑是:如果某字符两个对象中都出现了,那就将出现次数相减,如果减下来是负的,那就不显示;如果a中出现b中没出现,那就直接减0,显示在结果中;如果b有a没有,则也不显示。

D

E

F

1 字符串格式化’ '.format()

用于对字符串对象进行格式化,利用{}和:进行占位和具体格式
.format()传入你需要进行格式化的内容,可以是数字和字符串
转自runoob
也可以用来做进制转换,很方便

'{}, {} and {others} others like this'.format(*names[:3], others=n-2)
#如果需要设置参数的话,在后面需要写成关键词参数
#format支持有索引、无索引和关键词三种

G

H

I

J

1 列表连接 ’ '.join()

str.join(iter)方法可以把列表,字典(key),元祖等的各元素连接起来,分隔符使用前面的str,但要注意需要连接的对象iter其中的迭代元素必须要是字符串类型,如果是数字会报错

list1 = [2,3,4]
print(' '.join(list1))
#Traceback (most recent call last):
#  File "", line 73, in <module>
#    print(' '.join(list1))
#TypeError: sequence item 0: expected str instance, int found

K

L

M

1 制作映射表’ 'str.maketrans()
进行字符转换’ 'str.translate(trantable)
intab = "aeiou"
outtab = "12345"
trantab = str.maketrans(intab, outtab)   # 制作翻译表 翻译表内是ASCII或者Unicode编码的对应,为一个字典
 
str = "this is string example....wow!!!"
print (str.translate(trantab))  # 生成的trantab必须是一个字典
#th3s 3s str3ng 2x1mpl2....w4w!!!

N

O

P

1 输出函数print
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
#objects -- 复数,表示可以一次输出多个对象。输出多个对象时,需要用 , 分隔。
#sep -- 用来间隔多个对象,默认值是一个空格。
#end -- 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符串。
#file -- 要写入的文件对象。
#flush -- 输出是否被缓存通常决定于 file,但如果 flush 关键字参数为 True,流会被强制刷新。
#简单例子
print('awd','wdasd','dawda',sep='&')
#awd&wdasd&dawda



list =['awd','wdasd','dawda']
for item in list:
	print(item,end = '  ')
#awd  wdasd  dawda  
#  对比 不写end参数默认为\n
for item in list:
	print(item)
#awd
#wdasd
#dawda

Q

R

1 反转reverse(reversed)

reverse()方法为list独有,list.reverse(),也就是说,在字典,字符串或者元组中,是没有这个内置方法的,且直接在原对象上进行修改

lista = [1, 2, 3, 4]
lista.reverse()
print(lista)
#[4, 3, 2, 1]

reversed()可以对一切迭代器进行反转(字典不行,因为不是迭代器)
返回的是一个反转后的迭代器(需要用list,next等方法获得值)

aa = (1, 2, 3)
print(tuple(reversed(aa)))
#(3, 2, 1)
2 字符替换 replace()
str.replace(old, new[, max])  # old:需要更换的原字符串 # new: 需要更换的新字符串 max:最大替换次数

函数返回一个新的修改好的字符串,而原字符串不会进行更改!
字典直接用=改是改不动的,因为是不可变对象!

S

1 字符串分割 spilt
obj = str.split(str="", num=string.count(str)).
#str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。,如果有多个空格或者空字符,会被认为是一组,就是会被一起分割掉
print(' #Fuiaxmgw  rwmPv uzuisbwhpB  nkdqki vcumQakpysz angoZlYmlnpbsPtecjvewpjx'.split())
#  ['#Fuiaxmgw', 'rwmPv', 'uzuisbwhpB', 'nkdqki', 'vcumQakpysz', 'angoZlYmlnpbsPtecjvewpjx']
#  而如果指定了分割符号,例如一个空格' ',就会严格按照一个空格分,前面如果是空就显示空
print(' #Fuiaxmgw  rwmPv uzuisbwhpB  nkdqki vcumQakpysz angoZlYmlnpbsPtecjvewpjx'.split(' '))
#  ['', '#Fuiaxmgw', '', 'rwmPv', 'uzuisbwhpB', '', 'nkdqki', 'vcumQakpysz', 'angoZlYmlnpbsPtecjvewpjx']
#num -- 分割次数。默认为 -1, 即分隔所有。
2 列表排序 sort(sorted)

sort()无返回值,直接在原list上进行,Sort为list列表独有的函数,使用list.sort()方法
sorted()有返回值,可迭代对象都可以使用,obj = sorted(),生成的是可迭代对象形成的列表

list.sort(cmp=None, key=None, reverse=False)
#cmp -- 可选参数, 如果指定了该参数会使用该参数的方法进行排序。
#key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
#reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。

#example
aList = [123, 'Google', 'Runoob', 'Taobao', 'Facebook'];
aList.sort();
print "List : ",aList
List :  [123, 'Facebook', 'Google', 'Runoob', 'Taobao']


obj = list.sorted()
#sort在原迭代对象上进行排序,无返回值,而sorted会生成一个新的对象
#也可以直接使用sort()和sorted(),用法一样,只要是可迭代对象都可以使用该方法,但要注意迭代的东西到底是什么
key方法使用:

key可以让你指定使用某一你自定的方法进行排序,key的值是一个函数,你可以自定一个函数

def func(*args):
	pass

sorted(iterable,key = func)

也可以使用匿名函数,这是一种比较常见的方法

sorted(iterable,key = lambda x:f(x))
#一般在排序中,匿名函数的参数只有一个,就是你这个可迭代对象的迭代的对象,如果是list,那就是list中的每一个元素,字典比较特殊,他默认迭代的是键,也就是说,如果你写成的是sort(dict,key = lambda x:x)的形式的话,函数会提取出每一个字典元素的键进行比较,结果会变成一个list

迭代的是什么,最后的生成的就是以这个迭代的形式的列表集合!所以如果你要对字典的值排序,iterable要改成dict.items(),生成键值元组(key,value),再取出value,因为迭代的是元组,所以最后的形式也是[元组,元组,元组,…]

3 列表去重 set()

利用集合创建方式set() (集合是不包含重复元素的)

obj = set(raw)
# 集合基本操作
# 添加元素
s.add( x )
s.update( x )  # 元素可以是字典列表元祖
# 移除
s.remove( x ) #  将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。
s.discard( x ) #  如果元素不存在,不会发生错误
# 判断元素是否在集合中存在
x in s
4 字符串索引 str[]

字符串的索引str[1]用于输出字符串的某一个元素

var1 = 'Hello World!'
var2 = "Runoob"
 
print ("var1[0]: ", var1[0])
print ("var2[1:5]: ", var2[1:5])
#  可以使用':'来表示多少位到多少位的输出,**但是要注意[]是左闭右开的,与range一样**

T

U

V

W

X

Y

Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值