av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

用Python開發(fā)Emoji表情查找程序

本文轉(zhuǎn)載自微信公眾號「Python中文社區(qū)」,作者Python中文社區(qū)。轉(zhuǎn)載本文請聯(lián)系Python中文社區(qū)公眾號。

創(chuàng)新互聯(lián)服務項目包括昌邑網(wǎng)站建設(shè)、昌邑網(wǎng)站制作、昌邑網(wǎng)頁制作以及昌邑網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,昌邑網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到昌邑省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!

今天分享一個前幾天構(gòu)建的小應用程序,用來從命令行搜索emoji表情符號。

它可以通過OS命令行來完成,而且不必單擊任何東西即可獲得我的表情符號,更加便捷。

該工具支持一次將多個匹配的表情符號復制到剪貼板。

 
 
 
  1. $ emo
  2. ------------------------------------------------------------------------------------
  3. Type one or more emoji related words ...
  4. End a word with a . if you want to select an emoji if there are multiple
  5. matches, otherwise the first match will be picked. Type 'q' to exit.
  6. > snake beer fire ninja
  7. Copying    ???? to clipboard
  8. ------------------------------------------------------------------------------------
  9. Type one or more emoji related words ...
  10. End a word with a . if you want to select an emoji if there are multiple
  11. matches, otherwise the first match will be picked. Type 'q' to exit.
  12. > q
  13. Bye

至此,我的剪貼板上所有4個表情符號都寫好了,在鍵盤輸入Cmd + V即可。

是不是很酷?

安裝并運行程序包

 
 
 
  1. git clone [email protected]:PyBites-Open-Source/emojisearcher.git
  2. cd emojisearcher
  3. poetry install
  4. poetry run emo

poetry使依賴項管理變得輕而易舉,最后一個命令(別名)實際上有效,因為我將其放在pyproject.toml文件中:

 
 
 
  1. [tool.poetry.scripts]
  2. emo = "emojisearcher.script:main"

您也可以通過添加以下shell別名來使調(diào)用命令更短(就像我在第一個示例中一樣):

 
 
 
  1. $ alias emo
  2. alias emo='cd YOUR_PATH/emojisearcher && poetry run emo'

(將YOUR_PATH更改為項目的路徑。)

文件夾結(jié)構(gòu)

由于有了poetry new,文件夾結(jié)構(gòu)從一開始就遵循了公認的最佳做法。

我喜歡將測試文件放在專用的tests /文件夾中。

我使用emoji庫中的EMOJI_UNICODE常量來查找emoji表情:

 
 
 
  1. ...
  2. EMOJI_MAPPING = EMOJI_UNICODE[LANGUAGE]
  3. ...
  4. def get_emojis_for_word(
  5.     word: str, emoji_mapping: dict[str, str] = EMOJI_MAPPING
  6. ) -> list[str]:
  7.     return [emo for name, emo in emoji_mapping.items() if word in name]

然后我使用pyperclip復制到操作系統(tǒng)的剪貼板中:

 
 
 
  1. from pyperclip import copy
  2. ...
  3. def copy_emojis_to_clipboard(matches: list[str]) -> None:
  4.     all_matching_emojis = ' '.join(matches)
  5.     print(f"Copying {all_matching_emojis} to clipboard")
  6.     copy(all_matching_emojis)

感謝這個庫的作者AlSweigart,這是一個很酷的程序包。

如何查找多個表情符號?

在這種情況下,我通過user_select_emoji函數(shù)進入交互模式。

我想用一種創(chuàng)新的方式來觸發(fā)此交互模式,為此選擇了信號字符(SIGNAL_CHAR):如果用戶的搜索字符串以點(.)結(jié)尾,它將進入交互模式。

原因如下:

 
 
 
  1. $ emo
  2. ------------------------------------------------------------------------------------
  3. Type one or more emoji related words ...
  4. End a word with a . if you want to select an emoji if there are multiple
  5. matches, otherwise the first match will be picked. Type 'q' to exit.
  6. > snake
  7. Copying  to clipboard
  8. ------------------------------------------------------------------------------------
  9. Type one or more emoji related words ...
  10. End a word with a . if you want to select an emoji if there are multiple
  11. matches, otherwise the first match will be picked. Type 'q' to exit.
  12. > flag
  13. Copying  to clipboard
  14. ------------------------------------------------------------------------------------
  15. Type one or more emoji related words ...
  16. End a word with a . if you want to select an emoji if there are multiple
  17. matches, otherwise the first match will be picked. Type 'q' to exit.
  18. > flag.
  19. 9 ??
  20. 10 ??
  21. 11 ???
  22. 12 
  23. 13 
  24. Select the number of the emoji you want: 12
  25. Copying  to clipboard
  26. ------------------------------------------------------------------------------------
  27. Type one or more emoji related words ...
  28. End a word with a . if you want to select an emoji if there are multiple
  29. matches, otherwise the first match will be picked. Type 'q' to exit.
  30. > q
  31. Bye

鍵入“snake(蛇)”后出現(xiàn)的emoji不會出錯,但是對于“flag(旗幟)”,它默認選擇12個匹配項中的第一個(對于“heart(心臟)”,我們會得到130個匹配的表情符號!),這里我想手動選擇一個,因此鍵入點".",以做出進一步的選擇。

測試

還有幾件事:

@ pytest.mark.parametrize非常好,可以使您的測試代碼更加簡潔。

將代碼分解為更多的功能使其更可重用且更易于測試。

我測試了使用@patch(“ builtins.input”,side_effect = ['a',10,2,'q']的交互模式模擬input的方法。side_effect中的列表包含將“double” input的參數(shù)。這等效于以下內(nèi)容(在鍵入tree之后。):

 
 
 
  1. $ emo
  2. ------------------------------------------------------------------------------------
  3. Type one or more emoji related words ...
  4. End a word with a . if you want to select an emoji if there are multiple
  5. matches, otherwise the first match will be picked. Type 'q' to exit.
  6. > tree.
  7. Select the number of the emoji you want: a
  8. a is not an integer.
  9. Select the number of the emoji you want: 10
  10. 10 is not a valid option.
  11. Select the number of the emoji you want: 2
  12. Copying  to clipboard
  13. ------------------------------------------------------------------------------------
  14. Type one or more emoji related words ...
  15. End a word with a . if you want to select an emoji if there are multiple
  16. matches, otherwise the first match will be picked. Type 'q' to exit.
  17. > q
  18. Bye

測試代碼時,一種有用的技術(shù)是刪除所有常見的前導空白。您可以為此使用textwrap.dedent,但是在這里我使用了替代的inspect.cleandoc。

上傳到PyPI

感謝toml文件中[tool.poetry]中的一些基本元數(shù)據(jù),發(fā)布到PyP非常簡單:

 
 
 
  1. poetry build
  2. poetry publish

(首先使用--repository of publish在測試PyPI上嘗試一下,看是否一切正常。)

如果您喜歡這個項目,請在Github上給它加星標,很高興能收到反饋。

https://github.com/PyBites-Open-Source/emojisearcher


分享文章:用Python開發(fā)Emoji表情查找程序
當前地址:http://uogjgqi.cn/article/dpphoho.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流