您的位置:首页 > 编程语言 > Python开发

一个用来处理手机通讯录乱码的小小小小python程序

2012-11-09 22:19 513 查看
从原先的手机导出了原先的通讯录,然后导入新的手机的时候,发现总是出现的是乱码。发现里面关于文件名的部分有问题,而且默认的编码方式有问题:原先的是utf-8,改为ANSI之后,把里面关于显示通讯录名字的部分改为文件名即可(文件名即通讯录里面同学的名字)。

 



即把红色部分改掉即可。

python代码如下:

# encoding: utf-8?
#liuyang
#20121109

import os
import re

if __name__ == "__main__" :
curdir = "d:/lianxi"
filenames = os.listdir(curdir)

for name in filenames:
newname = name[0:len(name)-4]
file = open(curdir+'/'+name,'r+')
f_string = file.read()

match_names = re.findall("utf-8:(.+)\\n",f_string)
for match_name in match_names:
change_string1 = f_string
change_string1 = re.sub(match_name,newname,change_string1)

change_string2 = re.sub("utf-8","ANSI",change_string1)

file.seek(0)
file.truncate()
file.write(change_string2)

file.close()


非常简单的代码,但是由于基本不懂python,还是遇到了很多的问题。把这些问题记录下来,即使这些问题可能微不足道:

1  读入文件夹内的所有文件可以用os 的listdir

2 open里面的必须是字符或者字符串才可以

3  r+是读写,只有在.close之后才会写入而且是把内容追加到了后面

a+是从最后面的开始读,所以如果你直接读的话会是空的

w+是不存在的话创建,存在的话清空

4 a.seek(0) 会把之前所有的覆盖掉

truncate()   用来清空 防止seek不够长

5  python 里面迭代的东西会很好玩:

比如说可能有很多个列表(是列表吗?)

只要 for   in   :

就可以了,非常方便

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python
相关文章推荐