第27课 Python文件的格式化写入

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’)能换一下位置么?

你可能感兴趣的:(第27课 Python文件的格式化写入)