#python #emoji
Вопрос:
У меня есть 2 файла python, 1-й-основной файл и 2-й, где у меня есть все смайлики в Юникоде с их именами (которые хранятся в переменной). В 1-м файле у меня есть список имен смайликов, теперь я хочу проверить, совпадают ли эти имена с тем же Юникодом этого смайлика.
Это то, что я делаю в главном файле:
import emoji_file
my_list = ["grinning_face", "rolling_on_the_floor_laughing", "winking_face"]
# checking if in the my_list.. "grinning_face", "rolling_on_the_floor_laughing" and "winking_face" is present in emoji_file.
for i in range(len(my_list)):
if my_list[i] == emoji_file.my_list[i]:
print("Present {emoji_file.my_list[i]}")
else:
print("Not present")
Это мой второй файл, emoji_file, который я импортирую в основной файл:
GRINNING_FACE = "U0001f600"
STAR_STRUCK = "U0001f929"
SLEEPY_FACE = "U0001f62a"
ANGUISHED_FACE = "U0001f627"
WINKING_FACE = "U0001f609"
выход
if my_list[i] == emoji_file.my_list[i]:
AttributeError: module 'emoji_file' has no attribute 'my_list'
Ответ №1:
Вы можете использовать __dict__
и in
для его достижения.
код:
import emoji_file
my_list = ["grinning_face", "rolling_on_the_floor_laughing", "winking_face"]
for i in range(len(my_list)):
if my_list[i].upper() in emoji_file.__dict__:
print(f"Present {emoji_file.__dict__[my_list[i].upper()]}")
else:
print("Not present")
Результат:
Present �😀
Not present
Present �😉
Комментарии:
1. Я ценю это, но могу ли я знать, почему мне нужно использовать эту
.upper()
функцию?2. @Oliviero Тоскани, потому что вы определяете переменные как все символы верхнего регистра в emoji_file.
Ответ №2:
import emoji_file
# get dict of the module, then extract those items that don’t start with __
names = [item for item in dir(emoji_file) if not item.startswith("__")]
my_list = ["grinning_face", "rolling_on_the_floor_laughing", "winking_face"]
# checking if in the my_list.. "grinning_face", "rolling_on_the_floor_laughing" and "winking_face" is present in emoji_file.
for i in range(len(my_list)):
# checks if the uppercase version of the item in my_list at index i is in names
if my_list[i].upper() in names:
print(f"Present {my_list[i]}")
else:
print("Not present")
Комментарии:
1. Пожалуйста, объясните, что вы сделали и почему это работает
2. Добавил несколько комментариев