-1

我有一个名为dictionary.txt的文件,它包含一个英文单词、一个空格,然后是每行中该单词的格鲁吉亚语翻译。

我的任务是每当在字典中找到一个没有相应单词的英语单词时(例如,如果该英语单词没有翻译),就会引发错误。

如果我提出一个ValueError或类似的东西,它会停止代码。你能给我举个例子吗(如果没有其他选择,请使用 try )。

def extract_word(file_name):
    final = open('out_file.txt' ,'w')
    uWords = open('untranslated_words.txt', 'w+')
    f = open(file_name, 'r')
    word = ''
    m = []
    for line in f:
        for i in line:
            if not('a'<=i<='z' or 'A' <= i <= 'Z' or i=="'"):
                final.write(get_translation(word))
            if word == get_translation(word) and word != '' and not(word in m):
                m.append(word)
                uWords.write(word + '\n')
                final.write(get_translation(i))
                word=''
            else:
                word+=i
    final.close(), uWords.close()

def get_translation(word):
    dictionary = open('dictionary.txt' , 'r')
    dictionary.seek(0,0)
    for line in dictionary:
        for i in range(len(line)):
            if line[i] == ' ' and line[:i] == word.lower():
                return line[i+1:-1]
    dictionary.close()
    return word

extract_word('from.txt')
4

3 回答 3

0

引发错误主要是为了让程序做出反应或终止。在您的情况下,您可能应该只使用 Logging API 向控制台输出警告。

import logging

logging.warning('Failed to find Georgian translation.') # will print a warning to the console.

将产生以下输出:

WARNING:root:Failed to find Georgian translation.
于 2014-06-12T08:28:25.930 回答
0

你应该看看这个

f = open('dictionary.txt')
s = f.readline()
try:
    g = translate(s)
except TranslationError as e:
    print "Could not translate" + s

假设这translate(word)当然会引发 TranslationError。

于 2014-06-12T08:28:37.940 回答
0

这个问题不是很清楚,但我认为您可能需要这种代码:

mydict = {}
with open('dictionary.txt') as f:
    for i, line in enumerate(f.readlines()):
         try:
              k, v = line.split() 
         except ValueError:
              print "Warning: Georgian translation not found in line", i   
         else:
              mydict[k] = v

如果line.split()没有找到两个值,则不进行拆包并ValueError引发 a。我们捕获异常并打印一个简单的警告。如果没有发现异常(else子句),则将该条目添加到 python 字典中。

请注意,这不会保留原始文件中的行顺序。

于 2014-06-12T08:32:10.940 回答