Android字符串进行去重,Python实现删除Android工程中的冗余字符串

该博客主要介绍了一个Python脚本,用于自动化处理Android项目的资源文件。脚本能识别`values`目录下的语言和区域限定资源文件,并对比基本语言文件与目标语言文件,生成需要比较的文件列表。通过对比`strings.xml`文件,删除目标文件中与基本文件相同的内容,实现资源文件的同步更新。此外,脚本还提供了过滤条件,避免处理特定类型的文件。
摘要由CSDN通过智能技术生成

#!/usr/bin/env python

# coding=utf-8

from os import listdir,path, system

from sys import argv

try:

import xml.etree.cElementTree as ET

except ImportError:

import xml.etree.ElementTree as ET

def genRegionLangPair(filePath):

basicLanguage = None

if ('values' in filePath) :

hasRegionLimit = ('r' == filePath[-3:-2])

if (hasRegionLimit):

basicLanguage = filePath[0:-4]

if (not path.exists(basicLanguage)) :

return None

belongsToEnglish = ("values-en" in basicLanguage)

if (belongsToEnglish):

#Compare with the res/values/strings.xml

return (path.dirname(basicLanguage) + '/values/strings.xml', filePath + "/strings.xml")

else:

return (basicLanguage + '/strings.xml', filePath + "/strings.xml")

return None

def genLangPair(filePath):

def shouldGenLanPair(filePath):

if (not 'values' in filePath ):

return False

if('dpi' in filePath):

return False

if ('dimes' in filePath):

return False

if ('large' in filePath):

return False

return True

if(shouldGenLanPair(filePath)):

basicLanguage = path.dirname(filePath) + '/values/strings.xml'

targetLanguage = filePath + '/strings.xml'

if (not path.exists(targetLanguage)):

return None

if (not path.samefile(basicLanguage,targetLanguage)) :

return (basicLanguage, targetLanguage)

return None

def genCompareList(filePath):

compareLists = []

for file in listdir(filePath):

regionPair = genRegionLangPair(filePath + '/' + file)

if (None != regionPair):

compareLists.append(regionPair)

languagePair = genLangPair(filePath + '/' + file)

if (None != languagePair) :

compareLists.append(languagePair)

return compareLists

def getXmlEntries(filePath):

root = ET.ElementTree(file=filePath).getroot()

entries = {}

for child in root:

attrib = child.attrib

if (None != attrib) :

entries[attrib.get('name')] = child.text

print 'xmlEntriesCount',len(entries)

return entries

def rewriteRegionFile(sourceEntries, filePath):

if (not path.exists(filePath)):

return

ET.register_namespace('xliff',"urn:oasis:names:tc:xliff:document:1.2")

tree = ET.ElementTree(file=filePath)

root = tree.getroot()

print root

totalCount = 0

removeCount = 0

unRemoveCount = 0

print len(root)

toRemoveList = []

for child in root:

totalCount = totalCount + 1

attrib = child.attrib

if (None == attrib):

continue

childName = attrib.get('name')

if (sourceEntries.get(childName) == child.text):

removeCount = removeCount + 1

toRemoveList.append(child)

else:

unRemoveCount = unRemoveCount + 1

print childName, sourceEntries.get(childName), child.text

print filePath,totalCount, removeCount,unRemoveCount

for aItem in toRemoveList:

root.remove(aItem)

if (len(root) != 0 ):

tree.write(filePath, encoding="UTF-8")

else:

command = 'rm -rf %s'%(path.dirname(filePath))

print command

system(command)

def main(projectDir):

lists = genCompareList(projectDir + "/res/")

for item in lists:

print item

src = item[0]

dest = item[1]

rewriteRegionFile(getXmlEntries(src),dest)

if __name__ == "__main__":

if (len(argv) == 2) :

main(argv[1])

如何使用

网友评论

文明上网理性发言,请遵守 新闻评论服务协议我要评论

47d507a036d4dd65488c445c0974b649.png

立即提交

专题推荐064df72cb40df78e80e61b7041ee044f.png独孤九贱-php全栈开发教程

全栈 100W+

主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门

7dafe36c040e31d783922649aefe0be1.png玉女心经-web前端开发教程

入门 50W+

主讲:灭绝师太 由浅入深、明快简洁,非常适合前端学习入门

04246fdfe8958426b043c89ded0857f1.png天龙八部-实战开发教程

实战 80W+

主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值