## 字符串与编码
[TOC]
* [参考资料](https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386819196283586a37629844456ca7e5a7faa9b94ee8000)
>[info] #### 使用ord 字符转ascii, chr将ascii转字符
~~~
print ord('a')
97
print chr(97)
a
~~~
>[info] #### 中文输出ascii和utf-8
~~~
输出ASCII
>>> u'中'
输出utf-8编码
>>>u'中'.encode('utf-8')
>>>len(u'中') #计算长度
使用decode
>>> print '\xe4\xb8\xad'.decode('utf-8')
中
~~~
>[info] #### 格式化 使用%
* %运算符就是用来格式化字符串的
* 有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略
* %s 字符串
* %d 整数
* %f 浮点数
* %x 十六进制整数
~~~
>>> 'my is %s' % 'wang'
'my is wang'
>>> 'hi %s, you have $%d' % ('wang', 10)
'hi wang, you have $10'
~~~
* 其中,格式化整数和浮点数还可以指定是否补0和整数与小数的位数:
~~~
>>> '%2d-%02d' % (3, 1)
' 3-01'
>>> '%.2f' % 3.1415926
'3.14'
~~~
* 对于Unicode字符串,用法完全一样,但最好确保替换的字符串也是Unicode字符串:
~~~
>>> u'Hi, %s' % u'Michael'
u'Hi, Michael'
~~~
* 有些时候,字符串里面的%是一个普通字符怎么办?这个时候就需要转义,用%%来表示一个%:
~~~
>>> 'growth rate: %d %%' % 7
'growth rate: 7 %'
~~~
>[warning] #### 文件的中文处理
* python 默认为ASCII码,无法输出汉字,需要更改编码
~~~
#coding=utf-8
或者
#coding=utf8
或
# -*- coding:UTF-8 -*-
或
# -*- coding:utf-8 -*- 大小写忽略
写成utf8或utf-8都行
~~~
>[info] #### 多行语句
* 但是我们可以使用斜杠( \)将一行的语句分为多行显示,如下所示:
~~~
total = item_one + \
item_two + \
item_three
~~~
* 语句中包含 [], {} 或 () 括号就不需要使用多行连接符。如下实例:
~~~
days = ['Monday', 'Tuesday', 'Wednesday',
'Thursday', 'Friday']
~~~
>[info] #### 同一行显示多条语句
* Python可以在同一行中使用多条语句,语句之间使用分号(;)分割,以下是一个简单的实例:
~~~
#!/usr/bin/python
import sys; x = 'runoob'; sys.stdout.write(x + '\n')
~~~
>[warning] #### Python空行
* 记住:空行也是程序代码的一部分
>[info] #### Print 输出
* print 默认输出是换行的,如果要实现不换行需要在变量末尾加上逗号 ,
~~~
#!/usr/bin/python
# -*- coding: UTF-8 -*-
x="a"
y="b"
# 换行输出
print x
print y
print '---------'
# 不换行输出
print x,
print y,
# 不换行输出
print x,y
~~~