3 回答
TA贡献1827条经验 获得超8个赞
我将回答我认为您要问的问题。如果我误解了,请纠正我!
我相信您在问如何将 txt 文件中的数字读取为整数。不幸的是,我不完全知道这个文件的目的或结构是什么,但我猜想它是将@符号左侧括号内的文本映射到括号内的文本到@ 符号的右侧。根据您的代码文件示例,这将是{'abc': 3, 'def': 'ghj'}.
为此,您可以使用 python 字符串方法 .isdigit() 并在它返回 true 时转换为 int ,或者如果您认为大多数值将是整数,您也可以尝试使用 ValueError 除外它。这是两种方法:
# PSEUDOCODE
file_dictionary = {}
for each line in file:
key = ...
value = ...
# HERE GOES SOLUTION 1 OR 2
解决方案 1:
if value.isdigit():
file_dictionary[key] = int(value)
else:
file_dictionary[key] = value
解决方案2:(如果您知道大多数将是整数,则速度会更快,但如果相反,则速度会更慢)
try:
file_dictionary[key] = int(value)
except ValueError:
file_dictionary[key] = value
如果要编辑字典值,只需访问要编辑的值并将其分配给另一个值。例如:file_dictionary['abc'] = 3 如果你想编辑一个键,你必须分配新键的值并删除旧键。前任:
file_dictionary = {'abd' = 3} # Create the dictionary
file_dictionary['abc'] = 3 # file_dictionary now = {'abc': 3, 'abd': 3}
file_dictionary.pop('abd') # file_dictionary now = {'abc': 3}
TA贡献1890条经验 获得超9个赞
希望在这个奇怪的时期一切顺利。
首先,您可以使用格式化来简化您的代码编写。
def save_dict_to_file(filename, dictionary): # done
with open(filename, 'w') as w:
for key in dictionary:
w.write("({})@({})\n".format(key, dictionary[key]))
但是有更简单的方法可以将字典保存在文件中。例如,您可以简单地将其写入文件或腌制它。
对于加载部分:
def load_dict_from_file(filename):
with open(filename, 'r') as r:
dictionary = {}
file_contents = r.readlines()
for line in file_contents:
key, value = line.split('@')
if key.isdigit():
key = int(key.strip())
if value.isdigit():
value = int(value.strip())
dictionary[key]=value
print(dictionary)
TA贡献1719条经验 获得超6个赞
您正在测试解码时的数字,但您可以尝试将其设为 anint并在失败时捕获异常。
def load_dict_from_file(filename):
with open(filename, 'r') as r:
dictionary = dict()
file_contents=r.readlines()
for line in file_contents:
#line=line.strip()
index=line.index('@')
key=line[1:index-1] #before the @
value=line[index+2:-2] #after the @
value=value.strip()
# see if its an int
try:
value = int(value)
execpt ValueError:
pass
dictionary[key]=value
print(dictionary)
添加回答
举报