很久没有更新博客了,由于来到字节跳动实习,最近一直都很忙没时间来写博客, 有些东西也不便透露出来
公司内部一般都是用的python和golang, 而python库又是用的pyhton2.7来写的,编码的途中经常遇到很多很多坑,而且很多还是相同的问题导致了不同的结果….
编码错误
用python2最恶心的一句话莫过于UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
python2不是默认utf-8编码…每个文件必须说明utf-8编码,不然py文件中遇到中文的话会直接出错
1 | # -*- coding: utf-8 -*- |
pycharm用户可以直接设置每次新增文件可以添加title.
设置->Editor->File and Code Templates -> Files -> Python Script
然后进行添加
在处理字符串时需要对中文字符进行unicode编码1
s = u'你好世界'
输出含有中文的unicode字符的时候还要进行utf-8编码1
print s.encode('utf-8')
对于如果要把unicode字符转化为str时,需要把环境编码设置为utf-81
2
3import sys
reload(sys).setdefaultencoding('utf8')
print str(s)
去除字符串中所有空格
1 | ''.join(s.split()) |
储存dict的list到csv文件
有很多和dict需要存到csv里,以dict的keys作为csv的头1
2
3
4
5
6
7
8
9import csv
headers = ['name','age']
person_list = [{'name':'djangoz','age':18},{'name':'alice','age':18}]
with open('file.csv','w') as csvfile:
csvwriter = csv.DictWriter(csvfile, fieldnames=headers)
csvwriter.writeheader()
for person in person_list:
csvwriter.writerow(person)
然后file.csv文件就是这样了1
2
3
4▶ cat file.csv
name,age
djangoz,18
alice,18