您好,登錄后才能下訂單哦!
本篇內容介紹了“怎么用Python開發Emoji表情查找程序”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
今天分享一個前幾天構建的小應用程序,用來從命令行搜索emoji表情符號。
它可以通過OS命令行來完成,而且不必單擊任何東西即可獲得我的表情符號,更加便捷。
該工具支持一次將多個匹配的表情符號復制到剪貼板。
$ emo ------------------------------------------------------------------------------------ Type one or more emoji related words ... End a word with a . if you want to select an emoji if there are multiple matches, otherwise the first match will be picked. Type 'q' to exit. > snake beer fire ninja Copying ? ? ? ? to clipboard ------------------------------------------------------------------------------------ Type one or more emoji related words ... End a word with a . if you want to select an emoji if there are multiple matches, otherwise the first match will be picked. Type 'q' to exit. > q Bye
至此,我的剪貼板上所有4個表情符號都寫好了,在鍵盤輸入Cmd + V即可。
是不是很酷?
git clone git@github.com:PyBites-Open-Source/emojisearcher.git cd emojisearcher poetry install poetry run emo
poetry使依賴項管理變得輕而易舉,最后一個命令(別名)實際上有效,因為我將其放在pyproject.toml文件中:
[tool.poetry.scripts] emo = "emojisearcher.script:main"
您也可以通過添加以下shell別名來使調用命令更短(就像我在第一個示例中一樣):
$ alias emo alias emo='cd YOUR_PATH/emojisearcher && poetry run emo'
(將YOUR_PATH更改為項目的路徑。)
由于有了poetry new,文件夾結構從一開始就遵循了公認的最佳做法。
我喜歡將測試文件放在專用的tests /文件夾中。
我使用emoji庫中的EMOJI_UNICODE常量來查找emoji表情:
... EMOJI_MAPPING = EMOJI_UNICODE[LANGUAGE] ... def get_emojis_for_word( word: str, emoji_mapping: dict[str, str] = EMOJI_MAPPING ) -> list[str]: return [emo for name, emo in emoji_mapping.items() if word in name]
然后我使用pyperclip復制到操作系統的剪貼板中:
from pyperclip import copy ... def copy_emojis_to_clipboard(matches: list[str]) -> None: all_matching_emojis = ' '.join(matches) print(f"Copying {all_matching_emojis} to clipboard") copy(all_matching_emojis)
感謝這個庫的作者AlSweigart,這是一個很酷的程序包。
在這種情況下,我通過user_select_emoji函數進入交互模式。
我想用一種創新的方式來觸發此交互模式,為此選擇了信號字符(SIGNAL_CHAR):如果用戶的搜索字符串以點(.)結尾,它將進入交互模式。
原因如下:
$ emo ------------------------------------------------------------------------------------ Type one or more emoji related words ... End a word with a . if you want to select an emoji if there are multiple matches, otherwise the first match will be picked. Type 'q' to exit. > snake Copying ? to clipboard ------------------------------------------------------------------------------------ Type one or more emoji related words ... End a word with a . if you want to select an emoji if there are multiple matches, otherwise the first match will be picked. Type 'q' to exit. > flag Copying ? to clipboard ------------------------------------------------------------------------------------ Type one or more emoji related words ... End a word with a . if you want to select an emoji if there are multiple matches, otherwise the first match will be picked. Type 'q' to exit. > flag. 1 ? 2 ? 3 ? 4 ? 5 ? 6 ? 7 ? 8 ? 9 ?‍?? 10 ??‍? 11 ??‍?? 12 ? 13 ? Select the number of the emoji you want: 12 Copying ? to clipboard ------------------------------------------------------------------------------------ Type one or more emoji related words ... End a word with a . if you want to select an emoji if there are multiple matches, otherwise the first match will be picked. Type 'q' to exit. > q Bye
鍵入“snake(蛇)”后出現的emoji不會出錯,但是對于“flag(旗幟)”,它默認選擇12個匹配項中的第一個(對于“heart(心臟)”,我們會得到130個匹配的表情符號!),這里我想手動選擇一個,因此鍵入點".",以做出進一步的選擇。
還有幾件事:
@ pytest.mark.parametrize非常好,可以使您的測試代碼更加簡潔。
將代碼分解為更多的功能使其更可重用且更易于測試。
我測試了使用@patch(“ builtins.input”,side_effect = ['a',10,2,'q']的交互模式模擬input的方法。side_effect中的列表包含將“double” input的參數。這等效于以下內容(在鍵入tree之后。):
$ emo ------------------------------------------------------------------------------------ Type one or more emoji related words ... End a word with a . if you want to select an emoji if there are multiple matches, otherwise the first match will be picked. Type 'q' to exit. > tree. 1 ? 2 ? 3 ? 4 ? 5 ? Select the number of the emoji you want: a a is not an integer. 1 ? 2 ? 3 ? 4 ? 5 ? Select the number of the emoji you want: 10 10 is not a valid option. 1 ? 2 ? 3 ? 4 ? 5 ? Select the number of the emoji you want: 2 Copying ? to clipboard ------------------------------------------------------------------------------------ Type one or more emoji related words ... End a word with a . if you want to select an emoji if there are multiple matches, otherwise the first match will be picked. Type 'q' to exit. > q Bye
測試代碼時,一種有用的技術是刪除所有常見的前導空白。您可以為此使用textwrap.dedent,但是在這里我使用了替代的inspect.cleandoc。
感謝toml文件中[tool.poetry]中的一些基本元數據,發布到PyP非常簡單:
poetry build poetry publish
(首先使用--repository of publish在測試PyPI上嘗試一下,看是否一切正常。)
“怎么用Python開發Emoji表情查找程序”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。