将乱七八糟的编码格式转换为统一的编码格式

前情提要:

由于以前我都是使用notepad++来记笔记,编码格式是什么都有,utf8、gbk、ANSI,现在我
使用sublime编辑器时,发现打开ANSI格式出错。浏览器告诉我sublime不支持ANSI格式。
没办法,只能将我的txt文件都改为utf8格式啦。
但要是使用记事本一个一个的去另存为,我感觉我会疯掉,所以我用python写了一个批量
转换文件编码格式的代码。  如有错误欢迎指出,欢迎分享出更高效的方法。

第一步:

设定一个列表,如果你给出文件夹路径,我就将txt文件全部读出来放入列表中;如果你给出
文件路径,我也是放入列表中。这样无论你给出的是文件夹路径还是文件路径,我都给能拿到
你需要转换格式的具体文件。
if os.path.isdir(path):
	lst = os.listdir(path)
	for item in lst:
		new_path = path + os.sep + item
		if os.path.isdir(new_path):
			read_table(new_path)
		elif os.path.isfile(new_path) and new_path.endswith(".txt"):
			table.append(new_path)		
elif os.path.isfile(path) and path.endswith(".txt"):
	table.append(path)

第二步:

我们需要下载一个chardet第三方模块,如果你使用的是anaconda则无需安装,因为它自带啊
下载方式也非常简单,使用cmd命令行 `pip install chardet` ,如果你嫌速度不给力,也
可以使用国内源。`pip install chardet -i "http://pypi.doubanio.com/simple"`

这里还有几个其他的国内源:

http://mirrors.aliyun.com/pypi/simple/ //阿里

https://pypi.tuna.tsinghua.edu.cn/simple/ //清华

http://pypi.douban.com/ //豆瓣

http://pypi.hustunique.com/ //华中理工大学

http://pypi.sdutlinux.org/ //山东理工大学

http://pypi.mirrors.ustc.edu.cn/ //中国科学技术大学

fo = open(file, "rb")
encod = chardet.detect(fo.read())['encoding']
fo.close()
print(encod)
这个模块的作用即可以通过各种编码的特征来猜测文件是哪种编码类型。

第三步:

通过使用chardet判断出来的格式打开文件,然后在使用统一格式(我用的是utf8)写入原文
件,覆盖掉原内容即可。
with open(file, "r", encoding=encod) as f:
	content = f.readlines()
	content = "".join(content)
with open(file, "w", encoding="UTF-8") as w:
	w.write(content)
print(file+" 成功由 "+encod+" 转换为 utf-8 格式。")
至此,这个简陋的代码就完成啦。如果你需要排盘完整的代码,那就
戳它,戳它,使劲戳它
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hao难懂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值