1. 格式化写文件
如果想写入文本文件的数据最终在文件里以下面的形式展示出来,需要在调用write函数时使用格式化控制字来格式化写入字符串。
下面的数据表现出数据是右对齐,且每列数据间有制表位。第一行是字段名,从第二行起是一条条的数据,和Excel唯一的区别是没有边框。
name age sex
keke 24 male
zoe 24 female
sensen 56 female
lili 24 female
yizu 24 female
#coding:utf-8
fn = "wformat.txt"
fw = open(fn, 'w')
fw.write("%10s\t %3s\t %6s\n"%("name", "age", 'sex'))
fw.write("%10s\t %3d\t %6s\n"%("lwk", 56, 'male'))
fw.write("%10s\t %3d\t %6s\n"%("lwk", 56, 'male'))
fw.write("%10s\t %3d\t %6s\n"%("lwk", 56, 'male'))
fw.write("%10s\t %3d\t %6s\n"%("lli", 56, 'male'))
fw.write("%10s\t %3d\t %6s\n"%("lwk", 56, 'female'))
fw.close()
2.split格式化数据
在格式化写入章节里,通过格式化控制字写入的数据如何读回呢?
name age sex
lwk 56 male
lwk 56 male
lwk 56 male
lli 56 male
lwk 56 female
上边数据每一行是一条记录,读回时可以把整行当作一个数据,当有的时候我们想最好这是编程三个单独的数据分别存储当前行的姓名、年龄和性别数据。可以用split函数来把这一行字符串分割成三个数据项。
fr = open("wformat.txt",'r')
line1 = fr.readline()
print line1
line2 = fr.readline()
print line2
print line2.split('\t')
fw.close()
输出结果如下:
name age sex
lwk 56 male
[' lwk', ' 56', ' male\n']
输出的结果很诡异!好像有多余的空行?
fr = open("wformat.txt",'r')
line1 = fr.readline().strip().strip('\n')
print line1
line2 = fr.readline().strip().strip('\n')
print line2
print line2.split('\t')
fw.close()
输出结果如下:
name age sex
lwk 56 male
['lwk', ' 56', ' male']
漂亮多了,呵呵。思考一下strip()和strip(’ ∖ n’)能换一下位置么?