python的一些文本操作和一个简单检索实现

  • 例子:
# from jieba import*
print("输入你想使用的功能")
question=input()
#在列表中找语句实现功能(下次在这里添加功能)
l=["1去除前后空格","2将斜杆反方向","3去除句子中的所有空格","4替换","5单斜杆变双斜杆","6删除左空格","7删除右空格"]
l2=[0]*len(l)   #记录序号问题中相同字数
l3=[]
for i in range(len(l)):
    i+=1
    l3.append(i)
def rangeQuestion(i):
    sum=0
    for k in i:
        for j in question:
            if k == j:
                sum+=1
    return sum
def idea():
    # print("请输入文本:")
    txt = open(r"C:\Users\strongonion\Desktop\in.txt", "r", encoding='utf-8').read()
    return txt
s=""
def idea1():
    s=idea()
    s=s.strip()
    return s
def idea2():
    s=idea()
    for i in s:
        if i=='\\':
            s = s.replace('\\', '/')
        elif i=='/':
            s = s.replace('/', '\\')
    return s
def idea3():
    s=idea()
    s=s.replace(' ','')
    return s
def idea4():
    s=idea()
    print("请输入你要替换的字:")
    txt=input()
    print("输入要换成的字:")
    retxt=input()
    s=s.replace(txt,retxt)

def idea5():
    s=idea()
    s=s.replace('\\','\\\\')
    s=s.replace('/','//')
    return s
# string.rstrip()
def idea6():
    s=idea()
    s=s.lsplit()
    return s
def idea7():
    s=idea()
    s=s.rsplit()
    return s
# i=''    #取question中的每个字
# j=0
# for i in question:
#     j=j+1
#     k=0
#     sum=0
#     for i in l[j]:  #列表l中的的j个元素
#         k=k+1
#         if i==l[j][k]:  #列表l中的的j个元素的第k个字
#             sum=sum+1
#     l2[j]+=sum
i2=-1
#比较l中和question中的相同字数放在l2中
for i in l:
    i2+=1
    l2[i2]=rangeQuestion(i)
#排序并输出每个问题
for i in range(len(l2)):
    for j in range(len(l2)-i-1):
        if l2[j]<l2[j+1]:
            l3[j],l3[j+1]=l3[j+1],l3[j]
            l2[j], l2[j + 1] = l2[j + 1], l2[j]
print("输入序号以实现如下功能:")
for i in l3:
    print(l[i-1])
n=eval(input())
if n==1:
    s=idea1()
elif n==2:
    s=idea2()
elif n==3:
    s=idea3()
elif n==4:
    s=idea4()
elif n==5:
    s=idea5()
elif n == 6:
    s = idea6()
elif n==7:
    s=idea7()
print("已经存储在out.txt中")
fr=open(r"C:\Users\strongonion\Desktop\out.txt","w")
fr.write(s)
print(s)
fr.close()

1. 检索方法实现

标题本例子的检索是比较输入的问题和l

l=["1去除前后空格","2将斜杆反方向","3去除句子中的所有空格","4替换","5单斜杆变双斜杆","6删除左空格","7删除右空格"]

功能问题的相同字数,排序靠前

图一:
图1

利用for

for i in range(len(l2)):
    for j in range(len(l2)-i-1):
        if l2[j]<l2[j+1]:
            l3[j],l3[j+1]=l3[j+1],l3[j]
            l2[j], l2[j + 1] = l2[j + 1], l2[j]

l2和l3是对应的,将l中出现和搜索语句字相同的次数放在l2中,l3为[1,2,3,4,5,…]这样的有序列表。使用上面语句后,再

for i in l3:
    print(l[i-1])

即可打印图一

2. 一些函数

replace(A,B)
B代替A

append(A)
在最后加入A元素

strip()
去掉前后空格
lsplit()
去除左空格
rsplit()
去除有空格

总结:

当然,检索也可以用第三方库,可能可以使用whoosh库
详细参考whoosh库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值