您的位置:首页 > 编程语言 > Python开发

利用python读取xml布局文件下面使用中文或者引用资源文件里面的中文,并且显示行号

2016-08-09 14:51 771 查看
因为最近安卓项目要求国际化啥的,所以要找出项目里所以使用中文的地方,包括布局文件,但用java写的话,相对python来说要复杂些,于是有了下面的代码:

import codecs

import sys

import re

#打开资源文件strings.xml并且指定编码格式

f = codecs.open('strings.xml', 'r', encoding='utf-8')

txt = f.read()  

#从资源文件里面找到对应名字的的中文

def findChinese(name):
global txt
#"menu_person_text">个人信息</string> 以“个人信息”前面的尖括号“>”和后面的尖括号“<”为界限找中文
t = txt[txt.find(name + '">') + len(name + '">'):]
t = t[0:t.find('<')]
#print(t)
return t

#打开待读取的xml布局文件并且指定编码格式

file = codecs.open('fragment_sfgl_ycfs_0303_layout.xml', 'r', encoding='utf-8')

#从file里面以我需要的行数+值的格式读取

for (num,value) in enumerate(file):
# 过滤value里面是有"text="和"prompt="的地方

  if("text=" in value)|("prompt=" in value):

  #去掉两边的空格,避免后续读取产生无谓的异常;v相当于android:text="@string/jtxx_dabh_text",

       v = value.strip()

       #布局里面文字的引用格式:android:text="@string/jtxx_dabh_text";但后有的布局文件的text直接给的中文,直接所以要以“@”为标志找,

       #v.find("@") != -1 说明找到了@   

       if(v.find("@") != -1):

           #找到"@string/jtxx_dabh_text"里面的“/”

           name = v[v.find("/")+1:len(v)]

           #找到"@string/jtxx_dabh_text"斜线“/”后面的引号“"”

           name = name[0:name.find('"')]

       #print(str(num+1)+", "+v)

           print(str(num+1)+", "+v+','+name+','+findChinese(name))

       else:

         #找第一个引号

          name = v[v.find('"')+1:len(v)]

         #找第二个引号

          name = name[0:name.find('"')]

           print(str(num+1)+", "+v+"," + name)
file.close()

运行结果:

逗号隔开的分别是:

行数,用中文的地方,用的中文

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python xml
相关文章推荐