linux文本编码格式转化 字幕处理

在处理字幕的时候,linux的编码格式转换很烦。

步骤: 用python先判断 其编码,再用iconv 转编码,再用awk处理格式。

file不能判断吗?file有时不准。

1.python判断编码

复制代码
$ cat t1.py 
# -*- coding:utf8 -*- 
import sys
#f1=open(sys.argv[2],'w')
with open(sys.argv[1], 'rb') as f:
    for line in f:
        # 转码,因为文件内的编码不一致
        try:
            line = line.decode('utf-8')
        except:
            try:
                line = line.decode('GB2312')  #right
                print('hehe')
            except:
                try:
                    line = line.decode('gbk')
                    print('hehe1')
                except:
                    try:
                        line = line.decode('GB18030')
                        print('hehe2')
                    except:
                        try:
                            line = line.decode('iso-8859-1')  #wrong
                        except:
                            continue

        line = line.strip()  # 去除首尾的空格tab回车换行
        print(line)
        #f1.write(line)
View Code
复制代码

也是试出来的。

如果用file判断:   file -b --mime-encoding  text

2.iconv 转码:        iconv -f "GB2312" -t "utf-8" Ep._20:Valar_Morghulis.ass >  Ep._20:Valar_Morghulis.txt

参考  http://kjetilvalle.com/posts/text-file-encodings.html

综合:

复制代码
$ cat readme.sh
#!/bin/sh
TO='utf-8'
for i in *ass
do
    FROM=$(file -b --mime-encoding $i)
    p=`basename $i .ass`
    [ $FROM != "iso-8859-1" ] && iconv -f $FROM -t $TO $i > ${p}.txt
    [ $FROM = "iso-8859-1" ] && iconv -f "GB2312" -t $TO $i > ${p}.txt
    awk -F',,' '/Dialogue.*正文/{split($0,arr,",正文,,");split($3,brr,"N");split($3,crr,"{");print "\n"arr[1]"\n" brr[1]"\n"crr[length(crr)-1]}' ${p}.txt |sed -e 's/.*}//g' -e 's/\\$//g'  > ${p}.norm
done
复制代码

 

posted @   dahu1  Views(601)  Comments(0Edit  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
历史上的今天:
2018-01-23 hmm学习笔记(二)
点击右上角即可分享
微信分享提示