标题: [文件操作] [已解决]提取两个文本等号左面不同的内容 [打印本页]
作者: yuningning520 时间: 2015-11-9 12:19 标题: [已解决]提取两个文本等号左面不同的内容
本帖最后由 yuningning520 于 2015-11-9 15:40 编辑
干脆用正则删了右边内容然后对比了【真是残念
换一个思路好了,范例里gui.back=Back是多出来的,单独提取到新文本就好了。
比如两个文本,但是前者因为更新有了更多的内容,后者不能直接全部覆盖
- en_US.lang
- gui.done=Done
- gui.cancel=Cancel
- gui.back=Back
- zh_CN.lang
- gui.done=完成
- gui.cancel=取消
把zh_CN.lang目前的内容替换到en_US.lang里而不影响新加入的gui.back=Back
另外大神们可以将未替换内容放在最后么。
作者: 依山居 时间: 2015-11-9 12:28
文件传网盘放链接。
作者: yuningning520 时间: 2015-11-9 13:10
回复 2# 依山居
可以写个bat么。。。因为有很多要改的、
作者: 依山居 时间: 2015-11-9 13:20
回复 3# yuningning520
你装个Beyond Compare 4,是文件对比工具。点点几下也能替换完了。
作者: 依山居 时间: 2015-11-9 13:23
回复 3# yuningning520
替代规则是什么?有的就都替换?
作者: yuningning520 时间: 2015-11-9 13:33
回复 4# 依山居
文本不对齐的。
作者: yuningning520 时间: 2015-11-9 13:33
回复 5# 依山居
等号左边相同替换右边。全部的。
作者: B魔方大人 时间: 2015-11-9 14:12
第一想法就是sed命令
作者: yuningning520 时间: 2015-11-9 14:17
回复 8# B魔方大人
换一个思路好了,范例里gui.back=Back是多出来的,单独提取的新文本就好了。不过因为更新,中文的翻译里等号左边也会有不同的,也提取出来就可以了。
求写个bat。。。我看代码比较晕。。。
作者: 依山居 时间: 2015-11-14 17:22
再提供解决这类问题的思路,楼主可以试试,把文件放到github这样带版本管理的代码托管网站上。
每次版本有更新的话,把内容贴到旧文件里能看到有修改的地方。
作者: 依山居 时间: 2015-11-24 12:19
- """
- python字典读取语言文件=号后的内容合并.py
- 题目来源 http://www.bathome.net/thread-38064-1-2.html
- 依山居 10:54 2015/11/24
- 使用python字典合并内容,不能保持原文件的顺序~
- """
- with open("zh_CN.lang",encoding="utf-8") as f:
- zh=[r.rstrip().split("=") for r in f.readlines() if "=" in r ]
- zh={r[0]:r[1] for r in zh}
-
- with open("en_US.lang",encoding="utf-8") as f:
- en=[r.split("=") for r in f.readlines() if "=" in r ]
- en={r[0]:r[1] for r in en}
-
- for r in zh:
- if (zh[r]!=''):
- en[r]=zh[r]
-
- result=sorted([r+"="+en[r]+'\n' for r in en])
- with open("out.txt","w+",encoding="utf-8") as f:
- f.writelines(result)
- f.close()
复制代码
作者: 依山居 时间: 2015-11-24 12:56
- """
- python正则替换语言文件=号后的内容合并.py
- http://www.bathome.net/thread-38064-1-2.html
- 依山居 12:29 2015/11/24
- 这个版本使用正则匹配替换
- 使用cn文件中已有的内容,正则替换en文件内容输出到out.txt
- out.txt保持了en文件的顺序
- """
- import re
- with open("zh_CN.lang",encoding="utf-8") as f:
- zh=f.read()
- rec=re.compile("(.+)=(.*)\n")
- zht=re.findall(rec,zh)
-
- with open("en_US.lang",encoding="utf-8") as f:
- en=f.read()
-
- for e,c in zht:
- rec=re.compile("(%s)=(.*)\n" %e)
- en=re.sub(rec,r"\1=%s\n" %c,en)
-
- with open("out.txt","w+",encoding="utf-8") as f:
- f.write(en)
- f.close()
复制代码
作者: 依山居 时间: 2015-11-24 13:42
- """
- python对比语言文件输出等号前面不同的行.py
- http://www.bathome.net/thread-38064-1-2.html
- 依山居 13:41 2015/11/24
- """
- import re
- with open("zh_CN.lang",encoding="utf-8") as f:
- zh=f.read()
- rec=re.compile("(.+)=(.*)\n")
- zht=re.findall(rec,zh)
-
- with open("en_US.lang",encoding="utf-8") as f:
- en=f.read()
- ent=re.findall(rec,en)
-
- notinen=[e+"="+c+"\n" for e,c in zht if (e not in en)]
- notinzh=[k+"="+v+"\n" for k,v in ent if (k not in zh)]
-
- with open("diff.txt","w+",encoding="utf-8") as f:
- if len(notinen)>=1:
- f.writelines(['zh文件比en文件多出的行:\n']+notinen)
- if len(notinzh)>=1:
- f.writelines(['en文件比zh文件多出的行:\n']+notinzh)
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |