关于python unicode的实验
实验环境:windows xp + vim
文件:test.py。编码:ansi
我们的目标操作test.py中保存的非英文字母。
文件头的#encoding=utf8/gbk,这个是用来说明源文件的硬盘编码以便python识别[4]。
----------------------------------------------
输入:
x = '中文'
输出: 编译失败
编译时需要知道‘中文’的硬盘编码(#encoding=utf8...)。
----------------------------------------------
输入:
#encoding=utf8
x = '中文'
输出: 编译失败
#encoding=utf8与实际源文件的编码不一致(ansi)
----------------------------------------------
#encoding=gbk
x = '中文'
输出:编译成功
同样,把文件存为utf8, 内容改为:
#encoding=utf8
x = '中文'
输出:同样编译成功
----------------------------------------------
#encoding=gbk
' 中文'.decode('gbk')
输出:编译成功
----------------------------------------------
#encoding=gbk
x = '中文'.decode('utf8')
输出: 编译失败。'中文'二字在python当前的内存中是gbk编码,因此只能用gbk decode.
----------------------------------------------
#encoding=gbk
x = '中文'.decode()
输出: 编译失败。因为decode无参数,系统则默认地认为'中文'二字是ascii, 从而尝试将ascii编为unicode。由于'中文'二字在python当前的内存中是gbk编码,只能用gbk decode,因此报错
----------------------------------------------
#encoding=gbk
x = u'中文'.encode('gbk')
print type(u'中文'),type(x),x
输出: <type 'unicode'> <type 'str'> 中文。
----------------------------------------------
#encoding=gbk
x = u'中文'.encode('utf8')
print type(u'中文'),type(x),x
输出:
<type 'unicode'> <type 'str'> 涓枃。虽然还是能运行,但是输出了错误结果,因为实际编码(gbk)和声明的编码(utf8)不匹配
----------------------------------------------
#encoding=gbk
x = ['中文', u'中文', '中文'.decode('gbk')]
print x
输出:
['\xd6\xd0\xce\xc4', u'\u4e2d\u6587', u'\u4e2d\u6587']
----------------------------------------------
#encoding=gbk
x = 'スマ'
print x
输出:
スマ。完全正确。print会把'スマ'转换为'gbk'打印(实际是把‘'スマ'交给操作系统打印,操作系统默认用gbk打
相关文档:
调用一个控制台程序,获取它的标准输出,或把它的标准输出重定向到界面上,这里只介绍如何获取它的标准输出,因为原理都一样的。
使用python2.5的subprocess模块来实现。
import sys
import subprocess
def RunShellWithReturnCode(command, print_output=False,
universal_newline ......
最近在从头开始学习Python, 希望用blog顺便记录下来一些小的技巧。
今天记录第一个: variable _
在python的交互session中,也就是不带文件名直接输入"Python”之后python所创建的session,
变量"_"会保存上一次计算的结果。例如:
这个变量对经常把python当计算器用的同学可能有用。
参考:sys.displayhook( ......
▾ hide table of contents
0. ↑ 显示完整目录
1. 深入#
2. 布尔类型#
3. 数值类型#
1. 将整数强制转换为浮点数及反向转换#
2. 常见数值运算#
3. 分数#
4. 三角函数#
5. 布尔上下文环境中的数值#
4. 列表#
1. 创建列表#
......
Decorators是python中比较难以理解的东西,当然如果你接触过java的annotation,会发现这个Decorators在语法上非常的相似,但是两者的设计动机却没什么共同点;
这里讲的python中的decorators是对python中的function/method做装饰,这些修饰仅是当声明一个函数或者方法的时候,才会应用的额外调用。
python中的decorator分 ......
python中的datetime module是专门处理时间相关内容的模块,功能很强大,但是反而显得比较复杂。
一下代码是用来求从mysql中取到的timestamp和当前时间比较,求时间差的方法
import datetime
lasttime=a.get_last_timestamp(sid=40)[-1]["last_time"] #取到timestamp
delta = datetime.datetime.now()-lasttime # ......