Python HowTos¶
1.统计字符串中每个字符的个数¶
- str 内置 count 方法
s = 'abcdabc'
print(s.count('a'))
>>> 2
- collections 模块中的 Counter
from collections import Counter
s = 'abcdabc'
cnt = Counter(s)
print(cnt['a'])
>>> 2
- 正则表达式匹配
import re
count = len(re.findall('a', 'abcdabc'))
print(count)
>>> 2
2.Python 写入文件时有中文出现乱码问题的解决¶
打开文件的时候指定 encoding 参数即可
with open("index.text", "w", encoding="utf-8") as f:
f.write("我今年十八岁")
另外 str 也有 encode decode 方法
3.Python 获取对象的大小¶
使用 sys.getsizeof()
不过因为 python 中的对象其实都是类,就连字符串也不例外,所所以很多时候这一方法就显得不那么尽如人意了
那么要获取字符串的大小,对于一般无中文的字符串,使用 len() 函数即可,返回的长度即字符串占用的内存(仅仅是字符串,不包括类代码),如果有中文,中文占用 3或4 个字节(utf-8),情况就变得复杂起来了。
4.Python 中实现栈与队列¶
collections 模块中 有 deque 可以轻松模拟 stack 和 queue,实际上 Python 中也有专门的队列和栈的模块。
queue 模块中的 Queue 就是一个 FIFO 的数据结构也即 queue,常用方法
- class queue.Queue(maxsize=0) 构造函数
- Queue.qsize() 返回 队列 size 的估计
- Queue.empty() 判断是否为空
- Queue.full() 判断是否为满
- Queue.put(item, block=True, timeout=None) 入队
- Queue.get(block=True, timeout=None) 移除队头元素并返回此元素
可能 stack 真的没有必要用什么模块去实现了,因为 list 就有 pop 和 append 方法,这和 stack 是完全一样的。