如何将字符串存储在变量中,然后在Python中的其他函数或方法中使用这些变量?

问题描述 投票:0回答:1

所以我遇到了在Python中打印表情符号这个简单的问题。我认为有多种方法可以做到这一点,但以下是我发现的三种主要方法:-

  1. 使用表情符号的 UNICODE
  2. 使用表情符号的 CLDR 名称
  3. 使用表情符号模块

我想制作一个程序(使用三种方法中的每一种),我们从用户那里获取输入,询问他们想要打印哪个表情符号,然后在下一行中打印它。

这意味着—— 如果程序是使用方法 1 创建的,则用户必须输入 unicode。 如果使用方法 2 创建,则必须输入 CLDR 名称 如果使用方法 3 创建,则必须输入表情符号的名称(基于表情符号模块的语法)。

我面临的实际问题是将用户的输入存储到变量中,然后尝试使用该变量生成表情符号。这是因为输入被存储为字符串,因此在打印它时,打印命令只是打印字符串而不是将其视为 unicode。

对于方法1: 我试过了

user_emoji = input("Enter the unicode:- ")

print(r"\{}".format(user_emoji))

但是当我尝试输入 unicode 时,这只是给了我以下内容

\U0001f0cf

当我在网上查找时,我找到了解决方案这里,但并没有真正理解这里到底发生了什么。

对于方法2: 我试过了

user_emoji = input("Enter the CLDR name:- ")

print(r"\N{}".format(user_emoji))

但是当我输入“微微微笑的脸”时,我再次收到普通文本。

\Nslightly smiling face

在这里,我想如果有一种方法可以将 CLDR 名称转换为 UNICODE,那么我可以使用上面的解决方案并暴力破解我的方法来获得结果,但我也找不到这样做的方法。

对于方法3 我试过了

import emoji

user_emoji = input("Enter the emoji name:- ")
user_emoji = user_emoji.replace(" ","_")

print(emoji.emojize(r':{}:'.format(user_emoji)))

当我输入“微微微笑的脸”作为输入时,这是给我想要的结果的唯一方法。

🙂

希望有人可以解释方法 1 中的解决方案如何工作以及我需要做什么才能使方法 2 工作。

python string unicode emoji rawstring
1个回答
0
投票

您从根本上误解了字符串文字(创建字符串对象的源代码)和字符串(实际对象)之间的区别。

如果我写

"\n" 

在源代码中,即字符串文字,其计算结果为带有单个字符(换行符)的字符串。

如果我写

r"\{}".format('n')
,这会创建一个字符串,它看起来像字符串文字,但它不是源代码。它是一个字符串有两个字符,反斜杠字符和“n”字符:

>>> string = r"\{}".format('n')
>>> print(string)
\n
>>> list(string)
['\\', 'n']

如果您想接受unicode代码点,即只是一个数字,在您的情况下,您似乎以基数16提供它。您链接到的所有代码都是转换表示基数16数字的字符串到一个

int
对象(第二个参数是基数,默认为基数 10),然后使用
chr
函数从该数字中检索 unicode 字符:

>>> number_string = "0001f0cf"
>>> int(number_string, 16)
127183
>>> chr(127183)
'🃏'

最后,如果oyu想使用CLDR名称,可以使用

unicodedata
模块(标准库的一部分):

>>> import unicodedata
>>> cldr_name = "slightly smiling face"
>>> print(unicodedata.lookup(cldr_name))
🙂
© www.soinside.com 2019 - 2024. All rights reserved.