前言

在创建新账号时总会遇到密码问题,好记安全性又高的密码又不是很好想,很耽误时间,用诗词、名言警句或者座右铭啥的转成密码就很好记。在网上搜索合适诗句的时候,发现已经有人总结的比较全了 。于是参考着实现了一下,整个代码都很ez,可以自定义。


步骤很简单:

  1. 去除诗句中的标点
  2. 中文转拼音(基于xpinyin)
  3. 取拼音首字母,并把行首的拼音首字母大写
  4. 特殊字符处理

代码

from xpinyin import Pinyin
# from icecream import icdef Poetry_to_password(poetry):# 转拼音首字母p = Pinyin()py = p.get_initials(poetry, '')py = py.capitalize()# 找到非字母字符所在位置symbol = []for i, c in enumerate(py):if not c.isalpha():symbol.append(i)# 删除非字母字符if symbol:npy = py[:symbol[0]]npoetry = poetry[:symbol[0]]for i in range(1, len(symbol)):npy += py[symbol[i - 1] + 1:symbol[i]].capitalize()npoetry += poetry[symbol[i - 1] + 1:symbol[i]]npy += py[symbol[- 1] + 1:].capitalize()npoetry += poetry[symbol[- 1] + 1:]else:npy = pynpoetry = poetry# 特殊字符识别处理password = Special_character(npoetry, npy)return passworddef Special_character(npoetry, npy):# 特殊字符识别处理password = list(npy)p = Pinyin()py_all = p.get_pinyin(npoetry, tone_marks='marks')py_all = py_all.split('-')for i, y in enumerate(py_all):if y in ['líng', 'lín', 'lin', 'ling']:password[i] = '0'elif y in ['yī', 'yi']:password[i] = '1'elif y in ['èr', 'er']:password[i] = '2'elif y in ['sān', 'shān', 'san', 'shan']:password[i] = '3'elif y in ['sì', 'shì', 'si', 'shi']:password[i] = '4'elif y in ['wǔ', 'wú', 'wu', 'wǒ']:password[i] = '5'elif y in ['liù', 'niù']:password[i] = '6'elif y in ['qī', 'qi', 'xī', 'xi']:password[i] = '7'elif y in ['bā', 'ba']:password[i] = '8'elif y in ['jiǔ', 'jiu']:password[i] = '9'elif y in ['jiā']:password[i] = '+'elif y in ['jiǎn']:password[i] = '-'elif y in ['shù', 'sù']:password[i] = '|'for i, y in enumerate(npoetry):if y in ['云', '水', '雨', '风', '浪', '丝', '波']:password[i] = '~'elif y in ['未', '不', '惊', '叹', '无']:password[i] = '!'elif y in ['圈']:password[i] = '@'elif y in ['井', '网']:password[i] = '#'elif y in ['刀']:password[i] = '$'elif y in ['百', '白']:password[i] = '%'elif y in ['上', '高']:password[i] = '^'elif y in ['和', '兼', '且']:password[i] = '&'elif y in ['星', '乘', '日', '花', '雪']:password[i] = '*'elif y in ['下', '低', '底']:password[i] = '_'elif y in ['十']:password[i] = '+'elif y in ['等']:password[i] = '='elif y in ['大']:password[i] = '>'elif y in ['小']:password[i] = '<'elif y in ['斜', '除']:password[i] = '/'elif y in ['问', '谁', '孰', '何']:password[i] = '?'pw = ''for i, c in enumerate(password):pw += creturn pw

效果

调用:
password = Poetry_to_password(poetry)
示例1:
'不到长城非好汉,屈指行程二万。' -> !dccfhhQzxc2w
示例2:
'晚来天欲雪,能饮一杯无?' -> Wlty*Ny1b!
示例3:
'万般皆是命,半点不由人。' -> Wbj4mBd!yr

链接

参考这篇文章实现,这篇文章总结挺全,想法也挺好,比如补刀和通过声调来解决没有特殊字符和数字的问题,很有意思。我没有完全照着实现,只实现了基本的转换,一般情况够用了。

文章:
https://github.com/bingoohuang/blog/issues/22
实现:
https://github.com/Anonymous772066235/LittleTasks/blob/main/Poetry_to_password

Python 诗词名句等转为便于记忆的密码相关推荐

  1. python诗词名句网爬取《三国演义》

    import requests import reheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWe ...

  2. Python爬虫实战(02)—— 爬取诗词名句三国演义

    目录 前言 一.准备工作 二.爬取步骤 1. 引入库 2. 发送请求拿到页面 3.定位到章节URL 4.拼接URL拿到章节内容 5.存储各章节内容 完整代码 前言 这次爬虫任务是从诗词名句上爬取< ...

  3. 每日爬虫练习:bs4库爬取诗词名句网的四大名著

    一.前言 2020-04-2日爬虫练习 爬取网站:诗词名句网的四大名著 需求:将四大名著的每一个章节存储到本地 技术路线: 1.requests 2.BeautifulSoup 3.os 二.代码解释 ...

  4. python中object转str_python的id()函数介绍 python怎么将objectid转为str

    python id函数的输出值问题 Python中id函数为什么会对不同对象返回相同值如果那两个对象指向的是相同的内存地址,也就是说内部指向的其实是一个对象,那他们的ID返回值就是一样的. pytho ...

  5. Python:pmml格式文件的简介、安装、使用方法(利用python将机器学习模型转为Java常用的pmml格式文件)之详细攻略

    Python:pmml格式文件的简介.安装.使用方法(利用python将机器学习模型转为Java常用的pmml格式文件)之详细攻略 目录 pmml格式文件的简介 1.PMML结构 pmml安装 pmm ...

  6. 使用Xpath+多进程爬取诗词名句网的史书典籍类所有文章。update~

    上次写了爬取这个网站的程序,有一些地方不完善,而且爬取速度较慢,今天完善一下并开启多进程爬取,速度就像坐火箭.. # 需要的库 from lxml import etree import reques ...

  7. 使用Xpath爬虫库下载诗词名句网的史书典籍类所有文章。

    # 需要的库 from lxml import etree import requests # 请求头 headers = {'User-Agent': 'Mozilla/5.0 (Windows N ...

  8. python将txt文件转为excel格式以及写入excel超过65536行报错问题解决方法

    参考链接: https://blog.csdn.net/levy_cui/article/details/82252183 https://blog.csdn.net/levy_cui/article ...

  9. python怎么将txt转为excel_使用matlab或python将txt文件转为excel表格

    假设txt文件为: 一.matlab代码 data=importdata('data.txt'); xlswrite('data.xls',data); 二.python代码 利用pandas的Dat ...

最新文章

  1. VS2008 VS2010发布网站时如何产生固定命名的 Dll 文件
  2. 强化学习圣经:《强化学习导论》第二版(附PDF下载)
  3. 数据结构-荷兰国旗问题
  4. JavaScript基础07-day09【嵌套for循环、break和continue、对象、数据类型、对象字面量、函数】
  5. 共享智能指针编程实验
  6. 闲话网名之“Johnny”
  7. rest web服务_在WildFly的REST Web服务中与Jackson的双向关系
  8. 视频光端机在安防监控工程中的常见技术问题
  9. STM32F407控制AD7606 采用HAL库的TIM和SPI
  10. 改变centos系统的时区
  11. Hive 之 导入导出数据
  12. swing获取文本框内容_营销管理培训课件,大客服销售策略和技巧,全内容PPT拿来就用...
  13. JavaScript:执行机制
  14. 与旧代码接口的注意事项
  15. 23.Instance Objects
  16. xp java环境_XP系统怎么安装JAVA编程环境
  17. golang单线程对比map与bigCache小对象存取性能差别
  18. 前端克隆数据 --JS 深浅拷贝
  19. html语言剖析十六 调色原理
  20. 分水岭算法c语言,Opencv分水岭算法学习

热门文章

  1. 《NFL橄榄球》:底特律雄狮·橄榄1号位
  2. 用了这么久的 require,你真的懂它的原理吗?
  3. js Notification 通知
  4. 用vps搭建 MediaWiki 百科程序
  5. FFmpeg命令行--调整视频播放速度
  6. 几何图形构成的矢量化极简风格美术
  7. 服务器一直在运行却没有人玩的游戏,有哪些服务器一直没关,但是却已经很少有人玩的网络游戏?...
  8. PHP 数组操作方法
  9. 情人节,数学教你如何科学地哄女朋友?
  10. Maven和MyBatis整合时,漏掉mapper的xml文件和其他资源文件