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)
也是试出来的。
如果用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
linux文本编码格式转化 字幕处理的更多相关文章
- Linux文本流
Linux文本流 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 文本流 文件用于数据的存储,相当于一个个存储数据的房子.我们 ...
- 编程小技巧之 Linux 文本处理命令
合格的程序员都善于使用工具,正所谓君子性非异也,善假于物也.合理的利用 Linux 的命令行工具,可以提高我们的工作效率. 本文简单的介绍三个能使用 Linux 文本处理命令的场景,给大家开阔一下思路 ...
- Linux文本处理详细教程
1. 文本处理 本节将介绍Linux下使用Shell处理文本时最常用的工具: find.grep.xargs.sort.uniq.tr.cut.paste.wc.sed.awk: 提供的例子和参数都是 ...
- Linux 文本相关命令(1)
Linux 文本相关命令(1) 前言 最近线上环境(Windows Server)出现了一些问题,需要分析一下日志.感觉 Windows 下缺少了一些 Linux 系统中的小工具,像在这波操作中用到的 ...
- linux文本操作界面 vi面板如何复制一行
linux文本操作界面 vi面板如何复制一行 1)把光标移动到要复制的行上2)按yy3)把光标移动到要复制的位置4)按p 在vi里如何复制一行中间的几个字符?如果你要从光标处开始复制 4 个字符,则先 ...
- 最优秀的5个Linux文本编辑器
from: http://article.yeeyan.org/view/169956/174836 作为不久前举办的比赛的一部分内容,我从那些选出他们最喜欢的Linux文本编辑器的极客读者们那获得了 ...
- linux文本处理常用指令总结
引子 作为一个偏爱windows的程序员,以前做文本处理的时候总是喜欢在windows下用notepad++等图形化工具处理,比如有时需要把linux服务器上一个文件进行一次全局字符串替换这样简单的操 ...
- Linux系列教程(十)——Linux文本编辑器vim
通过前面几篇博客我们终于结束了Linux常用命令的介绍,Linux常用命令主要包括以下: ①.Linux文件和目录处理命令 ②.Linux链接命令和权限管理命令 ③.Linux文件搜索命令 ④.Lin ...
- linux文本处理命令
linux文本处理命令 1.wc命令 基本介绍 文件的行统计.字符统计.字节统计 基本语法 wc [OPTION]... [FILE]... wc [OPTION]... --files0-f ...
随机推荐
- 【BZOJ1025】[SCOI2009]游戏(动态规划)
[BZOJ1025][SCOI2009]游戏(动态规划) 题面 BZOJ 洛谷 题解 显然就是一个个的置换,那么所谓的行数就是所有循环的大小的\(lcm+1\). 问题等价于把\(n\)拆分成若干个数 ...
- bzoj2817[ZJOI2012]波浪
题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=2817 波浪 [问题描述] 阿米巴和小强是好朋友. 阿米巴和小强在大海旁边看海水的波涛.小 ...
- HGOI20180815 (NOIP 提高组模拟赛 day2)
Day 2 rank 11 100+35+30=165 本题是一道数论题,求ax+by=c的正整数对(x,y) x>=0并且y>=0 先说下gcd: 求a,b公约数gcd(a,b) 如gc ...
- cf1066F Yet Another 2D Walking (贪心+dijkstra)
易证我们走的时候只会从某一层的某端点走向另一端点.然后走向下一层的某端点.. 所以建图然后dijkstra就行了 调了一年以后发现dijkstra写错了 #include<bits/stdc++ ...
- 界面编程之QT的数据库操作20180801
/*******************************************************************************************/ 一.数据库连 ...
- EasyUI 格式化列
以下实例格式化在 easyui DataGrid 里的列数据,并使用自定义列的 formatter,如果价格小于 20 就将文本变为红色. 为了格式化一个数据网格(DataGrid)列,我们需要设置 ...
- idea中的pom文件中的jar包下载不了,手动下载jar包的方法
问题描述: 在pom文件中添加依赖的时候,程序怎么着都是下载不了,而且实验了各种方式: IDEA引MAVEN项目jar包依赖导入问题解决 https://www.cnblogs.com/a845701 ...
- 使用pandas导入csv文件到MySQL
之前尝试过用命令行来解决csv文件导入到MySQL这个问题,没想到一直没有成功.之后会继续更新的吧,现在先用pandas来解决这个问题,虽然会复杂一点,但至少能用. 例子是导入movielens的ra ...
- django-simple-captcha 验证码插件
官方文档:http://django-simple-captcha.readthedocs.io/en/latest/usage.html#installation github:https://gi ...
- Eclipse的一些常用的快捷键
写代码的时候常用的: Ctrl + 鼠标左键: 进入函数定义,变量声明: Alt + ←: 回到上次编辑的地方, 同理 Alt + → 可以移回来 Ctrl + O: 查找当前类的所有函数,变量 Ct ...