利用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()
运行结果:
逗号隔开的分别是:
行数,用中文的地方,用的中文
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操作android的xml资源文件,让其按照中文自动生成对应中文首字母加起来的名字,并且根据中文在java类里面替代对应的中文
- Activity中找不到或者不识别相对应的xml布局文件里面的控件的问题
- Unity读取txt文件并且用字典来使用txt里面的信息
- 使用python处理中文csv文件,并让excel正确显示中文
- Python 读取文件中unicode编码转成中文显示问题
- 使用Spring中Src下 -context.xml : 用资源文件夹保存数据库的链接信息 并在配置文件里读取
- 利用python读取带有中文的字符串,和将带有中文的字符串写到txt文件中
- 使用python处理中文csv文件,并让excel正确显示中文(避免乱码)
- java 读取资源文件并且动态设置资源里面的参数demo
- python3使用pickle读取文件提示TypeError或者UnicodeDecodeError的解决办法
- AJAX XML 实例 下面的例子将演示网页如何使用 AJAX 来读取来自 XML 文件的信息:
- 使用SAX或者DOM或者pull读取XML文件
- 使用python处理中文csv文件,并让excel正确显示中文(避免乱码)
- 解决Python爬虫在爬资源过程中使用urlretrieve函数下载文件不完全且避免下载时长过长陷入死循环,并在下载文件的过程中显示下载进度
- displaytag中列名显示为中文(从资源文件中读取)
- Android自定义控件使用attr.xml文件中的资源时在布局文件中的定义xmlns:app
- 使用界面库读取xml界面文件,程序运行后中文乱码
- Android读取资源文件——读取原始Xml内容和使用Menu文件
- ios 使用NSURlSession 下载文件并且使用进度条进行文件下载进度读取以及打开附件(word,excel,ppt,pdf)显示
- Python json文件读取及显示中文乱码的问题