Board logo

标题: [文件操作] [已解决]提取两个文本等号左面不同的内容 [打印本页]

作者: yuningning520    时间: 2015-11-9 12:19     标题: [已解决]提取两个文本等号左面不同的内容

本帖最后由 yuningning520 于 2015-11-9 15:40 编辑

干脆用正则删了右边内容然后对比了【真是残念


换一个思路好了,范例里gui.back=Back是多出来的,单独提取到新文本就好了。

比如两个文本,但是前者因为更新有了更多的内容,后者不能直接全部覆盖


把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

  1. """
  2. python字典读取语言文件=号后的内容合并.py
  3. 题目来源 http://www.bathome.net/thread-38064-1-2.html
  4. 依山居 10:54 2015/11/24
  5. 使用python字典合并内容,不能保持原文件的顺序~
  6. """
  7. with open("zh_CN.lang",encoding="utf-8") as f:
  8.     zh=[r.rstrip().split("=") for r in f.readlines() if "=" in r ]
  9. zh={r[0]:r[1] for r in zh}
  10. with open("en_US.lang",encoding="utf-8") as f:
  11.     en=[r.split("=") for r in f.readlines() if "=" in r ]
  12. en={r[0]:r[1] for r in en}
  13. for r in zh:
  14.     if (zh[r]!=''):
  15.         en[r]=zh[r]
  16. result=sorted([r+"="+en[r]+'\n' for r in en])
  17. with open("out.txt","w+",encoding="utf-8") as f:
  18.     f.writelines(result)
  19.     f.close()
复制代码

作者: 依山居    时间: 2015-11-24 12:56

  1. """
  2. python正则替换语言文件=号后的内容合并.py
  3. http://www.bathome.net/thread-38064-1-2.html
  4. 依山居 12:29 2015/11/24
  5. 这个版本使用正则匹配替换
  6. 使用cn文件中已有的内容,正则替换en文件内容输出到out.txt
  7. out.txt保持了en文件的顺序
  8. """
  9. import re
  10. with open("zh_CN.lang",encoding="utf-8") as f:
  11.     zh=f.read()
  12. rec=re.compile("(.+)=(.*)\n")
  13. zht=re.findall(rec,zh)
  14. with open("en_US.lang",encoding="utf-8") as f:
  15.     en=f.read()
  16. for e,c in zht:
  17.     rec=re.compile("(%s)=(.*)\n" %e)
  18.     en=re.sub(rec,r"\1=%s\n" %c,en)
  19. with open("out.txt","w+",encoding="utf-8") as f:
  20.     f.write(en)
  21.     f.close()
复制代码

作者: 依山居    时间: 2015-11-24 13:42

  1. """
  2. python对比语言文件输出等号前面不同的行.py
  3. http://www.bathome.net/thread-38064-1-2.html
  4. 依山居 13:41 2015/11/24
  5. """
  6. import re
  7. with open("zh_CN.lang",encoding="utf-8") as f:
  8.     zh=f.read()
  9. rec=re.compile("(.+)=(.*)\n")
  10. zht=re.findall(rec,zh)
  11. with open("en_US.lang",encoding="utf-8") as f:
  12.     en=f.read()
  13.     ent=re.findall(rec,en)
  14.    
  15. notinen=[e+"="+c+"\n" for e,c in zht if (e not in en)]
  16. notinzh=[k+"="+v+"\n" for k,v in ent if (k not in zh)]
  17. with open("diff.txt","w+",encoding="utf-8") as f:
  18.     if len(notinen)>=1:
  19.         f.writelines(['zh文件比en文件多出的行:\n']+notinen)
  20.     if len(notinzh)>=1:
  21.         f.writelines(['en文件比zh文件多出的行:\n']+notinzh)
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2