IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 搜索自动翻译小技巧与Django分页技术浅析 -> 正文阅读

[Python知识库]搜索自动翻译小技巧与Django分页技术浅析

搜索时翻译

这个思路受到了字符集的启发,如果我在本地定义一本字符集,里面存入某个英文单词和与之对应的中文翻译,这不就能实现翻译功能了么。

思路有了,那就来具体实现,首先最简单的定义字符集方式就是文件,需要了解python的文件读写技术;之后通过特定规则将文件中的英文与中文分两组并一一对应,这就用到了字符串切片技术(文件中读取的内容为字符串)。

def translate(key):
    #如果包含汉字则原样返回
    if(is_contains_chinese(key) == True):
        return key
    key_index = 0
    f = open('XunLu_details/doc/translate.txt','r')
    list_en = []
    list_cn = []
    #切分字符串,英文与中文,并存入不同列表中
    for row in f:
        #利用替换的方法删去换行,规范字符串
        row = row.replace('\n','')
        row_split = row.split(':')
        list_en.append(row_split[0])
        list_cn.append(row_split[1])
    for index,value in enumerate(list_en):
        if(key == value):
            key_index = index
    return list_cn[key_index]
    f.close()
#判断是否汉字
def is_contains_chinese(strs):
    for char in strs:
        if '\u4e00' <= char <= '\u9fa5':
            return True
    return False

定义了两个函数,其中第二个函数的作用是根据汉字在unique字符集中的顺序判断所传内容(key)是否为汉字。

translate函数是实现将translate.txt文件中的记录分组并查找,因为文件中我是这样定义的,

?英文与中文之间仅有一个冒号,行与行之间有一个默认的换行符,所以可以用split(':')与replace('\n','')来按照冒号切分并隐去换行,这里注意每一次对文件的循环都能读取到一整行数据(加上换行符)。

这样就可得到两组数据,且这两组数据的下标一一对应,如第一组["love","born"],第二组["爱","生"],

?再通过enumerate将所传入英文的下标找到,并返回对应中文数组中的下标,正常搜索就好啦。

搜索时可以通过len方法,根据所传关键字个数来判断(关键字用空格隔开)

    #记录切分列表中有多少数据
    keyCount = len(key)
    #调用translate函数,判断所得key是否为中文,并翻译
    for index,value in enumerate(key):
        key[index] = translate(value)
    from django.db.models import Q  #Q类实现filter中的或运算
    if(keyCount == 2):
        key_str1 = key[0]
        key_str2 = key[1]
        data = Message.objects.filter(Q(title__contains=key_str1)|Q(title__contains=key_str2))
    elif(keyCount == 3):
        key_str1 = key[0]
        key_str2 = key[1]
        key_str3 = key[2]
        data = Message.objects.filter(Q(title__contains=key_str1)|Q(title__contains=key_str2)|Q(title__contains=key_str3))
    #如果字符串超过三个只搜索第一个
    else:
        #将列表数据转换为字符串
        key_str = key[0]
        #模糊查询,并用values通过字典返回
        data = Message.objects.filter(title__contains=key_str)

?如果关键字是两个或三个,会分别执行两参或三参的或查询

?enumerate函数

必须通过两个循环变量来遍历其中的可迭代内容,前者为下标、后者为值

提取TXT文本中指定内容——pythonhttps://blog.csdn.net/weixin_44409075/article/details/88080091删除python字符串中指定的字符https://m.py.cn/faq/python/22313.html

Django分页

需要的类:django.core.paginator.Paginator(不同Django版本的位置可能会微调,根据编译器提示即可)

我使用GET方法传页码,这里需要给一个默认值才行

?然后初始化对象,并把获取到的当前页码加进去

?此时通过object_list获取到的data数据集中当前页应显示的数据,将它们分条显示即可。

注意:经测data可以直接传QuerySet类数组;Paginator第二参控制每页显示条数;GET接收到的可能是字符串,int一下最保险

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-04-24 09:24:12  更:2022-04-24 09:26:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 18:07:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码