我正在尝试编写一个小的Python脚本来解析我的iPhone应用程序项目中的.strings文件,并确定哪些键可能没有被使用。我也在做一些字符串匹配来过滤掉一些结果。这是我的问题开始:)。如果我尝试像
那样的话for file_line in strings_file:
if 'search_keyword' in file_line:
...
搜索关键字通常不匹配,即使我打印相同的每个文件行,因为我似乎正在正确阅读文本并显示我的搜索关键字。
问题是这些.strings文件采用某种二进制格式。有谁知道解析这些文件的正确方法?
答案 0 :(得分:2)
没有使用这些.strings
文件的经验,但这就是您找不到匹配项的原因:
strings_file.read()
返回带有文件完整内容的字符串。迭代字符串迭代单个字符,即在for
循环中,file_line
不是一行,它总是只有一个字符(长度为1的字符串) ,显然不能包含多字符搜索词。
答案 1 :(得分:2)
使用正确的编码打开.strings
- 文件和source code。根据{{3}},您的文件编码可能是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
答案 2 :(得分:0)
听起来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];