1.urlencode
Python内置了urlencode函数:
urllib.urlencode()
不幸的是,这个函数只能接收key-value pair格式的数据。
例如:
m = {'name' : 'somebody'; 'gender' : 'male'}s = urllib.urlencode(m)print sgender=male&name=somebody如果我们只希望urlencode单个的String对象,这时候,除了将它转化为mapping object之外,还有一种方法:
def my_urlencode(s) : p = repr(s).replace(r'\x', '%') return p[1:-1]
print my_urlencode('你好')
%c4%e3%ba%c3
一点题外话:
Java中的urlencode需要指定编码:
java.net.URLEncoder.encode(String s, String enc)因为JVM内部所有的字符都是UTF的,故而需要指定encode的编码;
但Python不需要,因为Python中“看起来一样”的字符,如果编码不同,repr的结果是不一样的——也就是说,GBK编码的“新浪”和UTF-8编码的“新浪”,repr的结果是不同的,换句话说,my_urlencode的结果,取决于传入的字符串本身的编码。
2. tempfile
开发中经常需要用到临时文件,Python内置了对tempfile的支持:
import tempfiletf = tempfile.TemporaryFile() tf.write('hello')
tf.seek(0) #prepare for reading
tf.read()
......需要注意的是:
使用tempfile不需要知道文件名,默认的打开参数是w+b,w表示可读可写,binary用来保证在不同的平台上具有同样的内容。
另外,tempfile一旦调用close()函数就会立刻删除,因此,写完文件之后,不必执行close()操作,否则下面的程序无法读取该文件的内容。
Trackback: http://tb.donews.net/TrackBack.aspx?PostId=1009788