如何从文件中读取一个字符作为字典的键,然后将接下来的 n 个字符作为其值?
How to read one character from a file as a key into a dictionary, then make the next n characters its value?
假设我们有一个像这样的 .txt 文件(全部在一行上):
A2.)43@|@C3::#
所以我们希望 "A" 作为值“.)”的键,“4”作为值“@|@”等的键。键后的数字告诉我们要输入多少个字符读取为值,后面的字符是字典中下一项的键。
我正在努力解决的问题是编写循环。我在想我们可能想要使用 for 循环遍历文件的长度。但我真的不知道如何进行。
这对我有用
stringText = "A2.)43@|@C3::#"
i=0
myDictionary = {}
while True:
try:
#First we grab the key character using i
keyCharacter = stringText[i]
#Then we grab the next character which will tell us how many characters they value will have
# We also convert it to integer for future use
valueLength = int(stringText[i+1])
#Then we grab the value by slicing the string
valueCharacters = stringText[i+2:i+2+valueLength]
#We add this to the dictionary
myDictionary[keyCharacter] = valueCharacters
#We update i to continue where we left off
i = i+2+valueLength
except IndexError:
break
print myDictionary
除了 "try and except",您还可以查看该字符串的长度,并执行 if 语句以在 i 大于字符串的长度时中断循环。
假设我们有一个像这样的 .txt 文件(全部在一行上):
A2.)43@|@C3::#
所以我们希望 "A" 作为值“.)”的键,“4”作为值“@|@”等的键。键后的数字告诉我们要输入多少个字符读取为值,后面的字符是字典中下一项的键。
我正在努力解决的问题是编写循环。我在想我们可能想要使用 for 循环遍历文件的长度。但我真的不知道如何进行。
这对我有用
stringText = "A2.)43@|@C3::#"
i=0
myDictionary = {}
while True:
try:
#First we grab the key character using i
keyCharacter = stringText[i]
#Then we grab the next character which will tell us how many characters they value will have
# We also convert it to integer for future use
valueLength = int(stringText[i+1])
#Then we grab the value by slicing the string
valueCharacters = stringText[i+2:i+2+valueLength]
#We add this to the dictionary
myDictionary[keyCharacter] = valueCharacters
#We update i to continue where we left off
i = i+2+valueLength
except IndexError:
break
print myDictionary
除了 "try and except",您还可以查看该字符串的长度,并执行 if 语句以在 i 大于字符串的长度时中断循环。