根据stirng 文件内容,写xlxs,Excel文档

56 阅读4分钟

import pandas as pd import json

def read_xlsx_column(file_path, sheet_name, column_name): """ 读取 .xlsx 文件中的指定列内容 """ df = pd.read_excel(file_path, sheet_name=sheet_name, engine='openpyxl') column_data = df[column_name].dropna().tolist() # 删除空值并转换为列表 return column_data

def read_strings_file(file_path): """ 读取 .strings 文件内容并转换为字典 """ strings_dict = {} with open(file_path, 'r', encoding='utf-8') as f: for line in f: line = line.strip() if line.startswith('"'): key, value = line.split('=', 1) key = key.strip().strip('"') value = value.strip().strip(';').strip('"').strip().strip('"') strings_dict[key] = value return strings_dict

def filter_duplicates(data_list): """ 过滤重复内容 """ return list(set(data_list))

def write_matching_results_to_xlsx(xlsx_file, sheet_name, strings_dict, column_data, output_column): """ 将匹配的结果写回 .xlsx 文件中 """ df = pd.read_excel(xlsx_file, sheet_name=sheet_name, engine='openpyxl') matching_results = [] # matching_results.extend([0]*582)

for item in column_data:
    if item in strings_dict.keys():
        matching_results.append(strings_dict[item])
    else:
        matching_results.append(None)  # 如果未匹配到,填入 None

# print(matching_results)
# print(len(matching_results))
df[output_column] = matching_results  # 添加匹配结果列
df.to_excel(xlsx_file, sheet_name=sheet_name, index=False, engine='openpyxl')  # 保存结果

return df

def process_files(xlsx_file, sheet_name, column_name, strings_file, output_column): """ 组合所有步骤,实现从 .xlsx 文件读取一列内容, 与 .strings 文件中的键进行对比,写回 .xlsx 文件并过滤重复内容 """ column_data = read_xlsx_column(xlsx_file, sheet_name, column_name) # print(column_data) strings_dict = read_strings_file(strings_file) print(strings_dict.values()) # column_data_filtered = filter_duplicates(column_data) # print(output_column) result_df = write_matching_results_to_xlsx(xlsx_file, sheet_name, strings_dict,column_data, output_column)

return result_df

定义文件路径(需修改)

chinese_file_path = r"/Users/dhf/Desktop/ios_headset/HeylinkPro/HeylinkPro/zh-Hans.lproj/Localizable.strings" english_file_path = r"/Users/dhf/Desktop/ios_headset/HeylinkPro/HeylinkPro/en.lproj/Localizable.strings" german_file_path = r"/Users/dhf/Desktop/ios_headset/HeylinkPro/HeylinkPro/de.lproj/Localizable.strings" french_file_path = r"/Users/dhf/Desktop/ios_headset/HeylinkPro/HeylinkPro/fr.lproj/Localizable.strings" Spanish_file_path = r"/Users/dhf/Desktop/ios_headset/HeylinkPro/HeylinkPro/es.lproj/Localizable.strings" greek_file_path = r"/Users/dhf/Desktop/ios_headset/HeylinkPro/HeylinkPro/el.lproj/Localizable.strings" korean_file_path = r"/Users/dhf/Desktop/ios_headset/HeylinkPro/HeylinkPro/ko.lproj/Localizable.strings" japanese_file_path = r"/Users/dhf/Desktop/ios_headset/HeylinkPro/HeylinkPro/ja.lproj/Localizable.strings" russian_file_path = r"/Users/dhf/Desktop/ios_headset/HeylinkPro/HeylinkPro/ru.lproj/Localizable.strings" brazil_file_path = r"/Users/dhf/Desktop/ios_headset/HeylinkPro/HeylinkPro/pt-BR.lproj/Localizable.strings" portugal_file_path = r"/Users/dhf/Desktop/ios_headset/HeylinkPro/HeylinkPro/pt-PT.lproj/Localizable.strings" thai_file_path = r"/Users/dhf/Desktop/ios_headset/HeylinkPro/HeylinkPro/th.lproj/Localizable.strings" chineseTw_file_path = r"/Users/dhf/Desktop/ios_headset/HeylinkPro/HeylinkPro/zh-Hant.lproj/Localizable.strings" chineseHongKong_file_path = r"/Users/dhf/Desktop/ios_headset/HeylinkPro/HeylinkPro/zh-HK.lproj/Localizable.strings" italian_file_path = r"/Users/dhf/Desktop/ios_headset/HeylinkPro/HeylinkPro/it.lproj/Localizable.strings"

示例调用

xlsx_file = '/Users/dhf/Desktop/多语言翻译.xlsx' # .xlsx 文件路径

sheet_name = 'Sheet1' # 工作表名称

column_name = 'ios_key(key不要更改)' # 需要读取的列名

strings_file = english_file_path # .strings 文件路径

output_column = '英语' # 写入的列名

示例调用

xlsx_file = '/Users/dhf/Desktop/多语言翻译.xlsx' # .xlsx 文件路径

sheet_name = 'Sheet1' # 工作表名称

column_name = 'ios_key(key不要更改)' # 需要读取的列名

strings_file = german_file_path # .strings 文件路径

output_column = '德语' # 写入的列名

示例调用

xlsx_file = '/Users/dhf/Desktop/多语言翻译.xlsx' # .xlsx 文件路径

sheet_name = 'Sheet1' # 工作表名称

column_name = 'ios_key(key不要更改)' # 需要读取的列名

strings_file = greek_file_path # .strings 文件路径

output_column = '希腊语' # 写入的列名

示例调用

xlsx_file = '/Users/dhf/Desktop/多语言翻译.xlsx' # .xlsx 文件路径

sheet_name = 'Sheet1' # 工作表名称

column_name = 'ios_key(key不要更改)' # 需要读取的列名

strings_file = Spanish_file_path # .strings 文件路径

output_column = '西班牙语' # 写入的列名

示例调用

xlsx_file = '/Users/dhf/Desktop/多语言翻译.xlsx' # .xlsx 文件路径

sheet_name = 'Sheet1' # 工作表名称

column_name = 'ios_key(key不要更改)' # 需要读取的列名

strings_file = french_file_path # .strings 文件路径

output_column = '法语' # 写入的列名

示例调用

xlsx_file = '/Users/dhf/Desktop/多语言翻译.xlsx' # .xlsx 文件路径

sheet_name = 'Sheet1' # 工作表名称

column_name = 'ios_key(key不要更改)' # 需要读取的列名

strings_file = italian_file_path # .strings 文件路径

output_column = '意大利语' # 写入的列名

xlsx_file = '/Users/dhf/Desktop/多语言翻译.xlsx' # .xlsx 文件路径

sheet_name = 'Sheet1' # 工作表名称

column_name = 'ios_key(key不要更改)' # 需要读取的列名

strings_file = japanese_file_path # .strings 文件路径

output_column = '日语' # 写入的列名

xlsx_file = '/Users/dhf/Desktop/多语言翻译.xlsx' # .xlsx 文件路径

sheet_name = 'Sheet1' # 工作表名称

column_name = 'ios_key(key不要更改)' # 需要读取的列名

strings_file = korean_file_path # .strings 文件路径

output_column = '韩语' # 写入的列名

xlsx_file = '/Users/dhf/Desktop/多语言翻译.xlsx' # .xlsx 文件路径

sheet_name = 'Sheet1' # 工作表名称

column_name = 'ios_key(key不要更改)' # 需要读取的列名

strings_file = portugal_file_path # .strings 文件路径

output_column = '葡萄牙语' # 写入的列名

xlsx_file = '/Users/dhf/Desktop/多语言翻译.xlsx' # .xlsx 文件路径

sheet_name = 'Sheet1' # 工作表名称

column_name = 'ios_key(key不要更改)' # 需要读取的列名

strings_file = russian_file_path # .strings 文件路径

output_column = '俄语' # 写入的列名

xlsx_file = '/Users/dhf/Desktop/多语言翻译.xlsx' # .xlsx 文件路径

sheet_name = 'Sheet1' # 工作表名称

column_name = 'ios_key(key不要更改)' # 需要读取的列名

strings_file = thai_file_path # .strings 文件路径

output_column = '泰语' # 写入的列名

xlsx_file = '/Users/dhf/Desktop/多语言翻译.xlsx' # .xlsx 文件路径 sheet_name = 'Sheet1' # 工作表名称 column_name = 'ios_key(key不要更改)' # 需要读取的列名 strings_file = chineseHongKong_file_path # .strings 文件路径 output_column = '繁体' # 写入的列名

执行处理

result_df = process_files(xlsx_file, sheet_name, column_name, strings_file, output_column) print("处理完成,匹配结果已写回 .xlsx 文件。")