当前位置: 首页 > news >正文

微信_网站提成方案点做网站推广服务网

微信_网站提成方案点做,网站推广服务网,鞋子网站建设策划书,施工企业环保应急预案内容将会持续更新#xff0c;有错误的地方欢迎指正#xff0c;谢谢! python之Bible快速检索器 TechX 坚持将创新的科技带给世界#xff01; 拥有更好的学习体验 —— 不断努力#xff0c;不断进步#xff0c;不断探索 TechX —— 心探索、心进取#xff01; 助力快…内容将会持续更新有错误的地方欢迎指正谢谢!   python之Bible快速检索器 TechX 坚持将创新的科技带给世界 拥有更好的学习体验 —— 不断努力不断进步不断探索 TechX —— 心探索、心进取 助力快速掌握 python 开发 为初学者节省宝贵的学习时间避免困惑 前言 最近在看shengjing的时候突发奇想能不能开发一款可以快速查询shengjing的软件通过输入书名章节这样的方式来快速查询于是就开发了这款能够可以快速查询的软件。 TechX 教程效果 源工程https://gitcode.com/CTLittleNewbie/BibleQ/overview 软件下载https://gitcode.com/CTLittleNewbie/BibleQ/releases 文章目录 一、准备1、文件准备2、工程准备 二、加载本地cvs.xml三、输入解析四、获取经文五、软件打包七、代码全文 一、准备 在做这个软件的时候首先考虑到要采用什么方式来获取shengjing当时想了3种获取方式API、爬虫和本地化文件 首先考虑使用API就去网上找到了一个相关API,但是发现这个API不支持中文找到的其他的API很多都不能用而且不稳定所以就放弃了这种方式。 后面考虑使用爬虫来爬取找到一个shengjing的网站但是只是个国外的网站可能比较慢国内可能访问不了也就放弃了。 然后考虑使用本地化文件看是否能下载shengjing的Json或者XML文件于是我在github上查找找到了xml格式的shengjing。 1、文件准备 xml格式的shengjing可以自行去下载地址 https://github.com/gratis-bible/bible。 里面包含了各种语言的版本我这里使用中文版下载解压后找到zh/cvs.xml文件 2、工程准备 新建一个python工程目录与下面保持一致将cvs.xml放在static文件夹中 二、加载本地cvs.xml 在加载cvs.xml之前还需要对cvs.xml做一些修改打开cvs.xml找到节点将里面的属性全部删除掉 删除完成之后与下面保持一致。 要查询首先需要加载本地xml到内存中 # 构建cvs.xml的路径bible_xml_path os.path.join(os.path.dirname(os.path.abspath(__file__)), static, cvs.xml)tree ET.parse(file_path)bible_root tree.getroot() 三、输入解析 在设计这款软件的时候考虑了有5中搜索方式 书名如创世记 获取整本书内容书名章 (如创世记1 获取书的第一章内容)书名章-章 (如创世记1-4 获取书的第一章到第4章内容)书名章:节 (如创世记1:1 获取书的第一章第一节内容)书名章:节-节 (如创世记1:1-10 获取书的第一章第一节到第十节内容) 同时还设计了不同的语言的输入目前可以通过中文、英文、繁体 进行输入搜索。 这里通过正则表达式来对输入进行匹配从而从输入种提取到书名、章数和节数允许通过中文、英文、繁体进行检索。 # 匹配书名1:1-10的格式pattern_range_with_verse r([\u4e00-\u9fa5A-Za-z])\s*(\d):(\d)-(\d)# 匹配书名1-4的格式pattern_range r([\u4e00-\u9fa5A-Za-z])\s*(\d)-(\d)# 匹配书名加章节格式的正则表达式pattern r([\u4e00-\u9fa5A-Za-z])\s*(\d*):?(\d*)四、获取经文 通过解析搜索关键字我们能够获取到书名ID章和节通过这三个参数可以生成不同的xpath用来从xml中查询数据。 情况一输入关键字包含书、章和节并且节包含- xpath f.//div[osisID{osis_id}]/chapter[osisID{osis_id}.{chapter}]/verse情况2输入关键字包含书、章和节并且节不包含- xpath f.//div[osisID{osis_id}]/chapter[osisID{osis_id}.{chapter}]/verse[osisID{osis_id}.{chapter}.{verse}]情况3输入关键字包含书和章并且章包含- xpath f.//div[osisID{osis_id}]/chapter[osisID{osis_id}.{ch_num}]/verse情况4输入关键字包含书和章并且章不包含- xpath f.//div[osisID{osis_id}]/chapter[osisID{osis_id}.{chapter}]/verse情况5输入关键字只包含书 xpath f.//div[osisID{osis_id}]//verse五、软件打包 –onefile 打包成单个文件 –noconsole 无控制台 -i favicon.ico 给软件添加图标要求是.ico格式的文件 –add-data “static;static” 将static文件夹和软件打包在一起 打包命令 pyinstaller --onefile --noconsole -i favicon.ico --add-data static;static BibleQ.py七、代码全文 import os import tkinter as tk from tkinter import messagebox, ttk import xml.etree.ElementTree as ET import re from ttkbootstrap import Style from tkinter import PhotoImage# 中文到osisID的映射 chinese_to_osisid_mapping {创世记: Gen,出埃及记: Exod,利未记: Lev,民数记: Num,申命记: Deut,约书亚记: Josh,士师记: Judg,路得记: Ruth,撒母耳记上: 1Sam,撒母耳记下: 2Sam,列王记上: 1Kgs,列王记下: 2Kgs,历代志上: 1Chr,历代志下: 2Chr,以斯拉记: Ezra,尼希米记: Neh,以斯帖记: Esth,约伯记: Job,诗篇: Ps,箴言: Prov,传道书: Eccl,雅歌: Song,以赛亚书: Isa,耶利米书: Jer,耶利米哀歌: Lam,以西结书: Ezek,但以理书: Dan,何西阿书: Hos,约珥书: Joel,阿摩司书: Amos,俄巴底亚书: Obad,约拿书: Jonah,弥迦书: Mic,那鸿书: Nah,哈巴谷书: Hab,西番雅书: Zeph,哈该书: Hag,撒迦利亚书: Zech,玛拉基书: Mal,马太福音: Matt,马可福音: Mark,路加福音: Luke,约翰福音: John,使徒行传: Acts,罗马书: Rom,哥林多前书: 1Cor,哥林多后书: 2Cor,加拉太书: Gal,以弗所书: Eph,腓立比书: Phil,歌罗西书: Col,帖撒罗尼迦前书: 1Thess,帖撒罗尼迦后书: 2Thess,提摩太前书: 1Tim,提摩太后书: 2Tim,提多书: Titus,腓利门书: Phlm,希伯来书: Heb,雅各书: Jas,彼得前书: 1Pet,彼得后书: 2Pet,约翰一书: 1John,约翰二书: 2John,约翰三书: 3John,犹大书: Jude,启示录: Rev }# 英文到osisID的映射 english_to_osisid_mapping {Genesis: Gen,Exodus: Exod,Leviticus: Lev,Numbers: Num,Deuteronomy: Deut,Joshua: Josh,Judges: Judg,Ruth: Ruth,1 Samuel: 1Sam,2 Samuel: 2Sam,1 Kings: 1Kgs,2 Kings: 2Kgs,1 Chronicles: 1Chr,2 Chronicles: 2Chr,Ezra: Ezra,Nehemiah: Neh,Esther: Esth,Job: Job,Psalms: Ps,Proverbs: Prov,Ecclesiastes: Eccl,Song of Solomon: Song,Isaiah: Isa,Jeremiah: Jer,Lamentations: Lam,Ezekiel: Ezek,Daniel: Dan,Hosea: Hos,Joel: Joel,Amos: Amos,Obadiah: Obad,Jonah: Jonah,Micah: Mic,Nahum: Nah,Habakkuk: Hab,Zephaniah: Zeph,Haggai: Hag,Zechariah: Zech,Malachi: Mal,Matthew: Matt,Mark: Mark,Luke: Luke,John: John,Acts: Acts,Romans: Rom,1 Corinthians: 1Cor,2 Corinthians: 2Cor,Galatians: Gal,Ephesians: Eph,Philippians: Phil,Colossians: Col,1 Thessalonians: 1Thess,2 Thessalonians: 2Thess,1 Timothy: 1Tim,2 Timothy: 2Tim,Titus: Titus,Philemon: Phlm,Hebrews: Heb,James: Jas,1 Peter: 1Pet,2 Peter: 2Pet,1 John: 1John,2 John: 2John,3 John: 3John,Jude: Jude,Revelation: Rev }# 繁体中文到osisID的映射 traditional_to_osisid_mapping {創世記: Gen,出埃及記: Exod,利未記: Lev,民數記: Num,申命記: Deut,約書亞記: Josh,士師記: Judg,路得記: Ruth,撒母耳記上: 1Sam,撒母耳記下: 2Sam,列王記上: 1Kgs,列王記下: 2Kgs,歷代志上: 1Chr,歷代志下: 2Chr,以斯拉記: Ezra,尼希米記: Neh,以斯帖記: Esth,約伯記: Job,詩篇: Ps,箴言: Prov,傳道書: Eccl,雅歌: Song,以賽亞書: Isa,耶利米書: Jer,耶利米哀歌: Lam,以西結書: Ezek,但以理書: Dan,何西阿書: Hos,約珥書: Joel,阿摩司書: Amos,俄巴底亞書: Obad,約拿書: Jonah,彌迦書: Mic,那鴻書: Nah,哈巴谷書: Hab,西番雅書: Zeph,哈該書: Hag,撒迦利亚書: Zech,瑪拉基書: Mal,馬太福音: Matt,馬可福音: Mark,路加福音: Luke,約翰福音: John,使徒行傳: Acts,羅馬書: Rom,哥林多前書: 1Cor,哥林多後書: 2Cor,加拉太書: Gal,以弗所書: Eph,腓立比書: Phil,歌羅西書: Col,帖撒羅尼迦前書: 1Thess,帖撒羅尼迦後書: 2Thess,提摩太前書: 1Tim,提摩太後書: 2Tim,提多書: Titus,腓利門書: Phlm,希伯來書: Heb,雅各書: Jas,彼得前書: 1Pet,彼得後書: 2Pet,約翰一書: 1John,約翰二書: 2John,約翰三書: 3John,猶大書: Jude,啟示錄: Rev }# 统一合并的映射表用于解析输入时的查找 combined_mapping {} combined_mapping.update(chinese_to_osisid_mapping) combined_mapping.update(english_to_osisid_mapping) combined_mapping.update(traditional_to_osisid_mapping)# 全局变量用于存储加载的圣经XML数据 bible_root None # 默认设置 default_theme superhero default_font_family 宋体 default_font_size 16 current_theme default_theme current_font_family default_font_family current_font_size default_font_size # 全局变量用于存储Style对象 style None# 加载圣经XML文件的函数 def load_bible_xml(file_path):global bible_roottry:tree ET.parse(file_path)bible_root tree.getroot()if bible_root:print(圣经加载成功。)return Trueelse:print(圣经加载失败。)return Falseexcept Exception as e:print(圣经加载出错。)return False# 修改 parse_input 函数添加支持书名1-4和书名1:1-10的格式 def parse_input(input_text):# 匹配书名1:1-10的格式pattern_range_with_verse r([\u4e00-\u9fa5A-Za-z])\s*(\d):(\d)-(\d)# 匹配书名1-4的格式pattern_range r([\u4e00-\u9fa5A-Za-z])\s*(\d)-(\d)# 匹配书名加章节格式的正则表达式pattern r([\u4e00-\u9fa5A-Za-z])\s*(\d*):?(\d*)# 尝试匹配书名1:1-10的格式match_range_with_verse re.match(pattern_range_with_verse, input_text.strip())if match_range_with_verse:book match_range_with_verse.group(1) # 提取书名chapter match_range_with_verse.group(2) # 提取章节号verse_start match_range_with_verse.group(3) # 提取起始节号verse_end match_range_with_verse.group(4) # 提取结束节号osis_id combined_mapping.get(book, None)if osis_id:return osis_id, chapter, verse_start - verse_end# 尝试匹配书名1-4的格式match_range re.match(pattern_range, input_text.strip())if match_range:book match_range.group(1) # 提取书名chapter_start match_range.group(2) # 提取起始章节号chapter_end match_range.group(3) # 提取结束章节号osis_id combined_mapping.get(book, None)if osis_id:print(osis_id)print(chapter_start)print(chapter_end)return osis_id, chapter_start - chapter_end, None# 尝试匹配书名格式match re.match(pattern, input_text.strip())print(match)if match:book match.group(1).lower().capitalize() # 提取书名chapter match.group(2) # 提取章节号verse match.group(3) # 提取节号osis_id combined_mapping.get(book, None)if osis_id:return osis_id, chapter, verse# 如果都没有匹配成功返回Nonereturn None, None, Nonedef get_bible_text(osis_id, chapter, verse):global bible_rootif not bible_root:return 圣经数据尚未加载。verses_text []previous_chapter None# 处理章节和经文的范围查询if chapter and verse:if - in verse:verse_start, verse_end map(int, verse.split(-))# 获取指定范围内的经文xpath f.//div[osisID{osis_id}]/chapter[osisID{osis_id}.{chapter}]/verseresult bible_root.findall(xpath)for verse_element in result:verse_num int(verse_element.get(osisID).split(.)[-1])if verse_start verse_num verse_end:current_chapter chapterif previous_chapter and previous_chapter ! current_chapter:verses_text.append(\n) # 添加空行verses_text.append(f[{current_chapter},{verse_num}] {verse_element.text.strip()})previous_chapter current_chapterelse:# 获取单个经文xpath f.//div[osisID{osis_id}]/chapter[osisID{osis_id}.{chapter}]/verse[osisID{osis_id}.{chapter}.{verse}]verse_element bible_root.find(xpath)if verse_element is not None:verses_text.append(f[{chapter},{verse}] {verse_element.text.strip()})elif chapter:# 获取整个章节的经文if - in chapter:chapter_start, chapter_end map(int, chapter.split(-))# 获取指定范围内的章节for ch_num in range(chapter_start, chapter_end 1):xpath f.//div[osisID{osis_id}]/chapter[osisID{osis_id}.{ch_num}]/verseresult bible_root.findall(xpath)for verse_element in result:verse_num int(verse_element.get(osisID).split(.)[-1])current_chapter str(ch_num)if previous_chapter and previous_chapter ! current_chapter:verses_text.append(\n) # 添加空行verses_text.append(f[{current_chapter},{verse_num}] {verse_element.text.strip()})previous_chapter current_chapterelse:# 获取单个章节的经文xpath f.//div[osisID{osis_id}]/chapter[osisID{osis_id}.{chapter}]/verseresult bible_root.findall(xpath)for verse_element in result:verse_num int(verse_element.get(osisID).split(.)[-1])verses_text.append(f[{chapter},{verse_num}] {verse_element.text.strip()})else:# 获取整本书的经文xpath f.//div[osisID{osis_id}]//verseresult bible_root.findall(xpath)for verse_element in result:book, ch_num, verse_num verse_element.get(osisID).split(.)current_chapter ch_numif previous_chapter and previous_chapter ! current_chapter:verses_text.append(\n) # 添加空行verses_text.append(f[{ch_num},{verse_num}] {verse_element.text.strip()})previous_chapter current_chapterif verses_text:return \n.join(verses_text)else:return 未找到对应经文。# Function to show search result in the GUI def show_search_result(search_input):global root_frameglobal current_font_sizeglobal current_font_familyclear_frame(root_frame)search_label ttk.Label(root_frame, textSearch Results, font(current_font_family, 18, bold))search_label.grid(row0, column0, columnspan2, pady10, stickyew)search_label.configure(anchorcenter)# Create search box to show search input and allow new searchsearch_frame ttk.Frame(root_frame, padding10)search_frame.grid(row1, column0, stickyew)search_entry ttk.Entry(search_frame, font(current_font_family, 12))search_entry.insert(0, search_input)search_entry.grid(row0, column0, stickyew)search_frame.columnconfigure(0, weight1)# Bind Enter key to perform searchsearch_entry.bind(Return, lambda event: on_search_from_result(search_entry.get().strip()))# Show search result text areatext_scroll tk.Scrollbar(root_frame)text_scroll.grid(row2, column1, stickyns)result_text tk.Text(root_frame, wraptk.WORD, yscrollcommandtext_scroll.set, font(current_font_family, current_font_size))result_text.grid(row2, column0, stickynsew, padx10, pady10)text_scroll.config(commandresult_text.yview)osis_id, chapter, verse parse_input(search_input)if osis_id:bible_text get_bible_text(osis_id, chapter, verse)result_text.insert(tk.END, bible_text)else:result_text.insert(tk.END, 输入格式错误或未找到对应经文。)# Button to go back to search pagestyle.configure(Large.TButton, font(current_font_family, 12))back_button ttk.Button(root_frame, textReturn, commandopen_search_page, styleLarge.TButton, bootstyleprimary-outline)back_button.grid(row3, column0, pady10)# Configure grid row and column weights to make search box and results resizeableroot_frame.grid_rowconfigure(2, weight1)root_frame.grid_columnconfigure(0, weight1)# Function to clear frame content def clear_frame(frame):for widget in frame.winfo_children():widget.destroy()# Function to handle search action from result page def on_search_from_result(search_input):show_search_result(search_input.strip())# Function to open search page def open_search_page():clear_frame(root_frame)main_window()# Function to handle search from search page def on_search():search_input entry.get().strip()if search_input:show_search_result(search_input)else:messagebox.showwarning(警告, 请输入要搜索的经文。)# Function to create and configure the main window def create_main_window():global root_frameroot_window tk.Tk()root_window.title(BibleQ)root_window.geometry(800x600)global stylestyle Style(themecurrent_theme)root_frame ttk.Frame(root_window, padding20)root_frame.pack(filltk.BOTH, expandTrue)main_window()root_window.mainloop()# 主界面包含搜索框和设置按钮 def main_window():global current_font_familytitle_label ttk.Label(root_frame, textHallelujah,Bible, font(current_font_family, 26, bold))title_label.grid(row0, column0, columnspan2, pady20, stickyew)title_label.configure(anchorcenter)global entryentry ttk.Entry(root_frame, font(current_font_family, 14))entry.grid(row1, column0, padx20, pady10, stickyew)entry.focus()entry.bind(Return, lambda eventNone: on_search())# 加载图片注意PhotoImage支持的格式主要是PNG和GIFimage PhotoImage(fileos.path.join(os.path.dirname(os.path.abspath(__file__)), static, spring.png))# 调整图片大小image image.subsample(3, 3) # 缩小图片# 创建一个Label将图片放置在上面image_label ttk.Label(root_frame, imageimage)image_label.image image # 保持对图片的引用image_label.grid(row2, column0, columnspan2, pady20, stickyew)image_label.configure(anchorcenter)spring_label ttk.Label(root_frame, text哥林多前书 爱 13:4-6, font(current_font_family, 16, bold))spring_label.grid(row3, column0, columnspan2, pady20, stickyew)spring_label.configure(anchorcenter)spring_content ttk.Label(root_frame, text 是恒久忍耐又有恩慈爱是不嫉妒\n\n爱是不自夸不张狂不做害羞的事不求自己的益处\n\n不轻易发怒不计算人的恶不喜欢不义只喜欢真理。,font(current_font_family, 16))spring_content.grid(row4, column0, columnspan2, stickyew)spring_content.configure(anchorcenter)# Configure grid row and column weights to make search box and results resizeableroot_frame.grid_rowconfigure(5, weight1)root_frame.grid_columnconfigure(0, weight1)if __name__ __main__:# 获取当前文件的目录current_dir os.path.dirname(os.path.abspath(__file__))# 构建cvs.xml的路径bible_xml_path os.path.join(current_dir, static, cvs.xml)if load_bible_xml(bible_xml_path):create_main_window()else:print(Failed to load Bible XML.) TechX —— 心探索、心进取 每一次跌倒都是一次成长 每一次努力都是一次进步 END 感谢您阅读本篇博客希望这篇内容对您有所帮助。如果您有任何问题或意见或者想要了解更多关于本主题的信息欢迎在评论区留言与我交流。我会非常乐意与大家讨论和分享更多有趣的内容。 如果您喜欢本博客请点赞和分享给更多的朋友让更多人受益。同时您也可以关注我的博客以便及时获取最新的更新和文章。 在未来的写作中我将继续努力分享更多有趣、实用的内容。再次感谢大家的支持和鼓励期待与您在下一篇博客再见
http://www.laogonggong.com/news/121185.html

相关文章:

  • 微信小程序开发流程详细免费发布网站seo外链
  • 白银市建设局网站王浩内蒙古城乡建设厅网站
  • 响应式网站怎样做衡阳市建设学校官方网站
  • 环评在那个网站做虚拟主机与云服务器的区别
  • WordPress显示网站加载时间扶沟县网站开发
  • 成都网站制作成都做封面的免费网站
  • 装饰公司 网站模板专门做微信推送的网站
  • 电商网站支付体系建设特点亲水平台设计
  • 网站域名变了能查吗网站优化系统
  • 手机网站 如何 推广方案设计网站设计怎么做链接
  • 广东省建设厅网站查询四川建设人才网网站
  • 唯品会官网一家做特卖的网站巴南城乡建设网站
  • 网站建设策划报告官方网站建设需要做哪些东西
  • 企业站seo哪家好淘宝电商运营培训
  • 做网站维护有前途吗wordpress 主题 汉化教程
  • 百度搜索到自己的网站衡水手机网站建设公司
  • 网站系统优化手机网站建设是什么
  • 在线做网站教程茂名免费做网站
  • 网站建设包括哪些小型教育网站的开发与建设论文
  • 石家庄微信网站制作新罗区优出网络科技有限公司
  • 陕西专业网站开发公司wordpress 后台分页按钮
  • 学校网站建设开发方案书一流的做pc端网站
  • 门户网站 意义wordpress密码验证失败
  • 贵阳企业免费建站建网站做商城个体户资质可以
  • 合肥专业网站建设公司wordpress 注册 攻击
  • 深圳前海网站设计本地服务器搭建教程
  • 国外购物网站大全2022热点新闻事件
  • gis网站开发实战教程怎么样申请网站
  • 怎么做动漫原创视频网站网站的ftp上传地址
  • 北京网站建设服务器维护珠海专业网站建设公司哪家好