将文件转换为字典

Convert file to dictionary

我想要一个包含所有文本的文本文件,它在程序中表示,以便将我的程序翻译成另一种语言。我可以使用普通列表,但在查看代码时很难看出将代表哪些文本。

文本文件:

here is the text represented in the running program
inside the code you cant say whats written right here

代码:

language_file = open("file.txt", "r", encoding="utf-8")
language_list = storage_file.readlines()
print(language_list[1])

希望你能理解我的问题^ 我不想使用列表,而是想使用字典。然后文件应该看起来像这样:

"some_shortcut_to_remind_me_whats_happening": "Text in another language"
"another_shortcut": "Now I know whats written right here"

代码可能如下所示:

print(language_dict["another_shortcut"])

但我不知道如何从文本文件中获取字典

为什么不直接将文件保存在 json 中?它仍然很容易阅读,您也可以在一个文件中包含多种语言:

示例:

File.json 包含:

{
  "en": 
    {
      "some_shortcut_to_remind_me_whats_happening": "Text in another language",
      "another_shortcut": "Now I know whats written right here"
    }
}

您的代码将类似于:

import json

with open("file.json", "r") as f:
    json = json.load(f)

print(json["en"]["some_shortcut_to_remind_me_whats_happening"])

如果您不想使用外部库并按如下格式设置文件格式:

key1: value1
key2: value2
.....

您可以使用:

with open(filename, 'r') as f:
    my_dict = dict((key, value.strip())
                   for key, value in (line.split(':') for line in f))

您描述的内容看起来像一个 CSV 文件,其中分隔符是 : 并使用 " 作为引号(默认)。您可以通过这种方式轻松构建查找 table:

language_dict = {}
with open("file.txt", "r", encoding="utf-8", newline='') as language_file:
    reader = csv.reader(language_file, delimiter=':', skipinitialspace=True)
    for row in reader:
        language_dict[row[0]] = row[1]

注意:此语法仅对 Python3 有效,不幸的是,用于 csv 的文件的打开在 Python2 和 Python3 之间是不同的。在 Python2 中,第一行是:

with open("file.txt", "rb") as language_file: