簡體   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