Python实现获得所有拼音为某个拼音的所有汉字

好久没有写博客了,这几年的开发让我感受良多,同时我也感觉到了我自己成长的还不够。所以,以后这里将会有我个人所有的项目经验总结,以及项目中使用到的一些方便的小工具也会写出来。


前言

随着项目的开发,项目上线审核的时候,最麻烦的一项:就是屏蔽词的审核,在这里我建议大家,如果项目中有修改昵称或者屏蔽非法文字的需求的话,一定要弄一个屏蔽词库,最好放在客户端。这个屏蔽词库里面要全部小写,然后玩家在修改昵称的时候,把大写转成小写。然后再进行屏蔽词对比。有时候,审核人员会有各种各样奇怪的需求。比如:所有拼音是wei或者是xin的汉字都不能出现。还有一些会让你给出所有的项目代码或者项目中的文字。我都遇到过,接下里给大家介绍我是怎么解决这些情况的


一、获取所有拼音为某个拼音的汉字。

这种情况是真的还好,但也着实EX。比如:所有拼音是wei和拼音是xin的汉字都不能出现(在不考虑声调的情况下)。这个难点有几个:

  1. 我怎么知道某个汉字的拼音是什么?
  2. 我怎么拿到所有的汉字

这里我推荐大家使用python来完成这项工程。

首先,需要大家先加载python中的拼音库,因为需要用这个来获取当前汉字的拼音

可以在在命令提示符中输入如下代码

pip install xpinyin

 然后回车,等待安装完毕。然后打开自己的编辑工具。下出以下代码,然后执行就可以获取到所有拼音是该拼音的汉字。代码如下:

from xpinyin import Pinyin
p = Pinyin()
def pinyin(word):
    # 转换,不显示声调,使用空格作为分隔符。
    ret = p.get_pinyin(word,tone_marks=None,splitter=' ')
    print(ret)

all_chiness = ""
for i in range(0x4e00,0x9fa6):
    str = chr(i)
    ret = p.get_pinyin(str,tone_marks=None,splitter=' ')
    if ret == "wei" :
        all_chiness += str

print(all_chiness)

执行结果如下:

 这样子我们就获取到了所有的拼音是wei的汉字,还不包括声调的。如果想要知道详细的xpinyin的用法。大家可以参考这个:

点击这里前往学习

二、将项目中所有的代码,拷贝在同一份TXT文件当中

这是要求你必须得把所有项目的代码拷贝到一个TXT文件中。二话不说,直接上代码

import os

class CopyScriptToTxt:
    def CopyFile(self,srcPath,destPath):
        src = open(srcPath,"r",encoding='UTF-8');
        dest = open(destPath,"a",encoding='UTF-8');

        for line in src:
            dest.write(line);

        dest.write('\n');
        src.close();
        dest.close();

tempCopy = CopyScriptToTxt();
# 项目代码所在总目录
g = os.walk(r"C:\Program Files\Games\FPS\Scripts")
# 目标文件,最好先创建好
setDestPath = r"C:\Users\Administrator\Desktop\temp.txt"

for path,dir_list,file_list in g:
    for file_name in file_list:
        filePath = os.path.join(path, file_name)
        print(filePath)
        tempCopy.CopyFile(filePath, setDestPath);

到此,执行该脚本,然后打开桌面上的temp文件,你就发现你所有的代码都在这里了。

三、将连续的字符串改成一个字单独一行

这里就要用到正则表达式了,就是匹配出所有的中文汉字。这里的难点并不是匹配汉字,而是怎么把匹配到的汉字分开。

这次我并没有用到Python,而是用到了Lua。

首先介绍以这个string.gmatch(全局模式)这个方法:创建并返回一个迭代器,可用于for语句中迭代的进行全局查找。迭代器每执行一次返回一个找到的字符串,如果在模式串中用圆括号指定的匹配分组,则返回值有多个分别对应各个匹配分组的捕获结果。分组可以相互嵌套,捕获结果返的顺序对应模式串中匹配分组的左圆括号出现的前后顺序。如果你希望第一个返回值是匹配结果的完整字符串,那么请将整个模式串包含在一对圆括号内。

接下来上代码:

local txt = ""
-- 这个str就是第一个获得的所有拼音为wei的汉字
local str = "微危委威巍薇偎蜲揻詴溦隈燰鰄崴縅揋覣楲隇喴煨鰃媙癓嶶葳愄蝛倭椳逶厃烓霺癐鳂嵔葨围唯维违为桅洈蓶壝溈違峞潿鍏帷爲隹撝矀鮠囲沩圩湋峗潙醀帏為闱惟琟韦囗欈維圍涠覹媁潍鄬嵬濰闈幃犩韋喡硙尾伪委伟纬萎苇偉愇玮葦骪儰撱痏薳鲔娓梶碨踓浘韑嵔瀢芛韪徫猥骩僞捼瓗蔿鮪暐硊诿寪洧緯隗崣濻艉韡廆煒荱颹偽捤瑋蒍骫唩斖痿諉媁椲磈鍡屗渨腲韙亹嶉炜頠未卫喂遗位味慰胃为畏谓猬魏蔚尉罻軎煟菋蘶鏏犚螱餵瓗褽鮇媦硙讏懀緭躛為苿藯爲蝟餧衞墛瞆讆磑躗渭轊熭蜼霨叞猚衛饖喡謂鳚新欣薪心辛锌芯俽盺妡邤惞鑫杺馫炘噺莘廞忻鋅昕馨歆噷嬜訢忄鈊枔鐔襑礥镡伈信衅芯脪釁伩馸孞焮軐顖囟憖舋訫阠愖"
for k, v in string.gmatch(str, "[%z\1-\127\194-\244][\128-\191]*") do
    txt = txt.."\n"..k
end
print(txt)

点击这里可以在线测试代码

总结

以上这些,都是作者在项目审核中遇到的情况,各有各的不同,各有各的操作。最后,希望审核人员、渠道客服以及技术人员不要天天五点钟下班吧!

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值