繁体   English   中英

使用Python解析.strings文件

[英]Parse .strings file with Python

我正在尝试编写一个小的Python脚本来解析我的iPhone应用程序项目中的.strings文件,并确定哪些键可能没有被使用。 我也在做一些字符串匹配来过滤掉一些结果。 这是我的问题开始:)。 如果我尝试类似的东西

for file_line in strings_file:    
    if 'search_keyword' in file_line:
        ...

搜索关键字通常不匹配,即使我打印相同的每个文件行,我似乎正在正确阅读文本,我的搜索关键字出现。

问题是这些.strings文件是某种二进制格式。 有谁知道解析这些文件的正确方法?

没有这些.strings文件的经验,但这就是为什么你找不到匹配的原因:

strings_file.read()

返回包含文件完整内容的字符串 迭代一个字符串迭代单个字符 ,即在你的for循环中, file_line不是一行,它总是只有一个字符(一个长度为1的字符串),显然不能包含多字符搜索字。

使用正确的编码打开.strings -file和源代码 根据文档 ,您的文件的编码可能是utf-16。

# -*- coding: utf-8 -*-
import codecs

for line in codecs.open(u'your_file.strings', encoding='utf-16'):
    if u'keyword' in line:
       # process line

听起来像stings文件被保存为数据。 如果python无法读取它,您可以将其转换为Objective-c中的纯​​文本文件。

只是:(1)将字符串文件读入具有正确编码的文件中。 (2)转换为字典(3)将字典写入另一个文件。

所以:

NSString *strings=[NSString stringWithContentsOfFile:filePath encoding:NSUTF16StringEncoding error:&error];
NSDictionary *dict=[strings propertyList];
[dict writeToFile:anotherFilePath atomically:NO]; 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM