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

从原先的手机导出了原先的通讯录,然后导入新的手机的时候,发现总是出现的是乱码。发现里面关于文件名的部分有问题,而且默认的编码方式有问题:原先的是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   :
就可以了,非常方便

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值