我从projectgutenberg http://www.gutenberg.org/cache/epub/29765/pg29765.txt下载了下面的字典(它是25MB,所以如果你使用的是慢速连接,请避免点击链接)
在我的字典里,有一些词是专门为我在字典里找的,比如说在我的字典里有一些过时的词。在
我要提取的是定义,用“Defn”表示,然后打印这些行。我想出了一个相当难看的“解决方案”
def lookup(search):
find = search.upper() # transforms our search parameter all upper letters
output = [] # empty dummy list
infile = open('webster.txt', 'r') # opening the webster file for reading
for line in infile:
for part in line.split():
if (find == part):
for line in infile:
if (line.find("Defn:") == 0): # ugly I know, but my only guess so far
output.append(line[6:])
print output # uncertain about how to proceed
break
当然,这只打印第一行在“Defn:”之后。因此,当Python来处理新的文件时,我将如何处理它。我读过元组中的行,注意到有一些特殊的新行字符。在
所以我想告诉Python继续读,直到新行字符用完为止,但这不算最后一行必须读的。在
有人能用一些有用的功能来增强我的能力吗?我可以用它来解决这个问题(如果有一个最小的例子将不胜感激)。在
期望输出示例:
查找(“幻觉”)
出局:漫游;误入歧途;犯错;犯错误;犯错误;用于精神 过程。[R.]拜伦。在
查找(“幻觉”)
out:对没有真实感的对象的感知,或\r\n 没有相应外因的感觉,由\r\n 精神错乱或神经系统紊乱,如震颤性谵妄;妄想症。\r\n 幻觉总是大脑紊乱的证据,并且是\r\n 常见的精神错乱现象。W、 A.哈蒙德。在
从文本:
^{pr2}$
您可以拆分为段落并使用搜索词的索引,然后在以下位置找到第一个Defn段落:
使用整个文件返回:
^{pr2}$略短的版本:
从here我学到了一种简单的方法来处理内存映射文件,并将它们当作字符串使用。你可以先用这个词来定义。在
假设:
以下是返回第一个定义的函数:
<>强>解释<强>:我们必须考虑四种不同的情况。在Defn:
开头的行。如果找到它,我们将该行添加到定义中(不包括Defn:
的六个字符)。在如果我们什么也没找到,我们返回False。在
注:某些条目,如起重机,有多种定义。上面的代码不能处理这个问题。它只返回第一个定义。然而,考虑到文件的格式,编写一个完美的解决方案远非易事。在
相关问题 更多 >
编程相关推荐