python用三种方式定义字符串、并依次输出_如何用Python建立索引建立索引:首先输入100行字符串,用于构建倒排索引,每行字符串由若干不含标点符号的、全部小写字母组成的单词构成,每个单词之间以空...

import re

patt = re.compile("\w+")

def makeIndex(filename):

index = {}

with open(filename) as handle:

for i, ln in enumerate(handle):

for word in patt.findall(ln):

index.setdefault(word, []).append(i+1)

return index

def printIndex(index):

for word, lst in index.items():

print "%s: %s" % (

word, ", ".join(map(str, lst))

)

def indexQuery(index, *args):

found = None

for word in args:

got = index.get(word, [])

if not got:

return None

if not found:

found = set(got)

else:

found &= set(got)

if not found:

return None

return list(found)

index = makeIndex("baiduqa.py")

printIndex(index)

print indexQuery(index, "in", "enumerate")

追问:

filename baiduqa.py

追答:

makeIndex函数接收一个文件名作为参数,读取文件中的字符串; 在上面的例子里,将“baiduqa.py"作为要解读的文本文件。你可以将之换成你的数据文件

追问:

这个能输入一个单词 然后再进行查询吗

追答:

def makeIndex(filename):

index, lineno = {}, 0

while True:

line = raw_input()

if line:

for word in patt.findall(ln):

index.setdefault(word, []).append(i+1)

else:

break

return index

追问:

能和上面并一起吗,我比较菜

追答:

import re

patt = re.compile("\w+")

def makeIndex():

index, lineno = {}, 0

while True:

ln = raw_input()

if ln:

lineno += 1

for word in patt.findall(ln):

index.setdefault(word, []).append(lineno)

else:

break

return index

def printIndex(index):

for word, lst in index.items():

print "%s: %s" % (

word, ", ".join(map(str, lst))

)

def indexQuery(index, *args):

found = None

for word in args:

got = index.get(word, [])

if not got:

return None

if not found:

found = set(got)

else:

found &= set(got)

if not found:

return None

return list(found)

index = makeIndex()

printIndex(index)

while True:

ln = raw_input()

words = patt.findall(ln)

if words:

print indexQuery(index, *words)

else:

break

作业帮用户

2017-09-20

举报

icon_report_d51b383.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值