很久没有更新博客了,由于来到字节跳动实习,最近一直都很忙没时间来写博客, 有些东西也不便透露出来

公司内部一般都是用的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-8

1
2
3
import 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
9
import 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