溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時間:2021-06-28 14:44:51 來源:億速云 閱讀:155 作者:chen 欄目:編程語言

本篇內(nèi)容介紹了“怎么用Python開發(fā)Emoji表情查找程序”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

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

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

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

$ 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別名來使調(diào)用命令更短(就像我在第一個示例中一樣):

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

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

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

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

我喜歡將測試文件放在專用的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復(fù)制到操作系統(tǒng)的剪貼板中:

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函數(shù)進(jìn)入交互模式。

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

原因如下:

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

測試

還有幾件事:

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

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

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

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

上傳到PyPI

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

poetry build  poetry publish

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

“怎么用Python開發(fā)Emoji表情查找程序”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI