我试图说明一个翻译词典:
当用英语给出一个单词时,我返回希腊语中的含义(utf-8)
#Possible Content Of File:
#"Hello,Γεια\n"
#"Car,Αμαξι\n"
with codecs.open("dict.txt",'r',encoding='utf8') as f:
lines= f.read() #contains all the lines of the file
word=raw_input("Word To Find\n")
flag=0
temp=""
temp2=""
dictionary={}
#here is an algorithm i came up with, to seperate the string and get on temp the key
#and on temp2 the value , then i add them on the dictionary
for i in range(0,len(lines)):
if flag==0:
temp+=lines[i]
if lines[i]==',':
flag=1
continue
if lines[i]=='\n':
flag=0
dictionary.update({temp:temp2}) #adding the key and the value
#(the value is in utf-8)
temp=""
temp2=""
if flag==1:
temp2+=lines[i]
#print(dictionary.keys()) # [u'Hello,',u'Car,']
#print(dictionary.get(word)) returns None
print(dictionary[word])# KeyError
注意:该文件包含这种字符串:“Hello,Γεια\ n”和“Car,Αμαξι\ n”
错误:print(字典[word])抛出KeyError
这是Python 2.7
提前多多感谢
答案 0 :(得分:0)
问题的实现需要两个循环。外环通过线,内环通过当前线的字符,例如:
for line in lines:
for i in range(0, len(line)):
# Then using line[i] instead of lines[i]
此外,read()
获取全部内容,readlines()
是正确的功能。
以下实现使用split(',')
来分隔行中的单词。
此外,可以通过简单的dictionary[key] = value
更新字典。
导入编解码器
with codecs.open("dict.txt", 'r', encoding='utf8') as f:
lines = f.readlines()
word=raw_input("Word To Find\n")
dictionary={}
for line in lines:
if ',' in line:
key, value = line.split(',')
dictionary[key.strip()] = value.strip()
else:
print('Cannot parse line: ' + line)
if word in dictionary:
print(dictionary[word])
else:
print('Error: Translation not found.')
之前的实现假定该值没有逗号。 以下版本允许使用逗号:
for line in lines:
comma_index = line.index(',')
if comma_index >= 0:
key = line[0:comma_index]
value = line[comma_index + 1:]
dictionary[key.strip()] = value.strip()
else:
print('Cannot parse line: ' + line)
答案 1 :(得分:0)
你的分裂算法有点错误,因为内置支持在python中执行相同的任务,为什么要重新发明轮子?
componentDidMount(){
this.timeID=setInterval(()=>{
this.setState({
text:this.props.text+"."
})
console.log(this.state.text);
},1000)