用Python解析.strings文件
我正在尝试写一个小的Python脚本,用来解析我iPhone应用项目中的.strings文件,看看哪些键可能没有被使用。同时,我还在做一些字符串匹配,以过滤掉一些结果。这就是我遇到问题的地方:)。如果我尝试像这样做
for file_line in strings_file:
if 'search_keyword' in file_line:
...
搜索关键词经常无法匹配,尽管如果我在同一个循环中打印每一行文件内容,似乎可以正确读取文本,而且我的搜索关键词也能显示出来。
问题是这些.strings文件是以某种二进制格式存储的。有没有人知道有什么好的方法来解析这些文件?
3 个回答
0
听起来这个字符串文件是以数据的形式保存的。如果Python无法直接读取这个文件,你可以在Objective-C中把它转换成一个普通的文本文件。
具体步骤是: (1) 先把字符串文件读取到一个正确编码的文件中。 (2) 然后把它转换成字典。 (3) 最后把这个字典写入另一个文件。
所以:
NSString *strings=[NSString stringWithContentsOfFile:filePath encoding:NSUTF16StringEncoding error:&error];
NSDictionary *dict=[strings propertyList];
[dict writeToFile:anotherFilePath atomically:NO];
2
我对那些 .strings
文件没有经验,不过我可以告诉你为什么你找不到匹配的内容:
strings_file.read()
这个代码会返回一个包含文件全部内容的 字符串。当你遍历一个字符串时,其实是在一个个字符地遍历,也就是说在你的 for
循环中,file_line
不是一整行,而始终只是一个单独的字符(长度为1的字符串),显然这样是无法包含多个字符组成的搜索词的。