Hướng dẫn find emoji in text python - tìm biểu tượng cảm xúc trong văn bản python

Bạn có thể sử dụng thư viện

🤔 🙈 😌 💕 👭 👙 👩🏾‍🎓 👨‍👩‍👦‍👦 😊 🙅🏽 🙅🏽
3. Bạn có thể kiểm tra xem một CodePoint duy nhất là CodePoint biểu tượng cảm xúc bằng cách kiểm tra xem nó có chứa trong
🤔 🙈 😌 💕 👭 👙 👩🏾‍🎓 👨‍👩‍👦‍👦 😊 🙅🏽 🙅🏽
4 không.

import emoji

def extract_emojis[s]:
  return ''.join[c for c in s if c in emoji.UNICODE_EMOJI['en']]

Đã trả lời ngày 31 tháng 3 năm 2017 lúc 17:39Mar 31, 2017 at 17:39

Pedro Castilhopedro CastilhoPedro Castilho

9.6462 Huy hiệu vàng25 Huy hiệu bạc38 Huy hiệu Đồng2 gold badges25 silver badges38 bronze badges

8

Tôi nghĩ rằng điều quan trọng là chỉ ra rằng các câu trả lời trước đó sẽ không hoạt động với biểu tượng cảm xúc như 👨‍👩‍👦‍👦, bởi vì nó bao gồm 4 biểu tượng cảm xúc và sử dụng

🤔 🙈 😌 💕 👭 👙 👩🏾‍🎓 👨‍👩‍👦‍👦 😊 🙅🏽 🙅🏽
5 sẽ trả về 4 biểu tượng cảm xúc khác nhau. Tương tự cho biểu tượng cảm xúc với màu da như 🙅🏽.

Giải pháp của tôi

Bao gồm các mô -đun

🤔 🙈 😌 💕 👭 👙 👩🏾‍🎓 👨‍👩‍👦‍👦 😊 🙅🏽 🙅🏽
3 và
🤔 🙈 😌 💕 👭 👙 👩🏾‍🎓 👨‍👩‍👦‍👦 😊 🙅🏽 🙅🏽
7. Mô -đun Regex hỗ trợ nhận dạng các cụm đồ thị [trình tự các codepoint Unicode được hiển thị dưới dạng một ký tự duy nhất], vì vậy chúng ta có thể đếm biểu tượng cảm xúc như 👨‍👩‍👦‍👦

import emoji
import regex

def split_count[text]:

    emoji_list = []
    data = regex.findall[r'\X', text]
    for word in data:
        if any[char in emoji.UNICODE_EMOJI['en'] for char in word]:
            emoji_list.append[word]
    
    return emoji_list

Kiểm tra

Với nhiều biểu tượng cảm xúc với màu da:

line = ["🤔 🙈 me así, se 😌 ds 💕👭👙 hello 👩🏾‍🎓 emoji hello 👨‍👩‍👦‍👦 how are 😊 you today🙅🏽🙅🏽"]

counter = split_count[line[0]]
print[' '.join[emoji for emoji in counter]]

output:

🤔 🙈 😌 💕 👭 👙 👩🏾‍🎓 👨‍👩‍👦‍👦 😊 🙅🏽 🙅🏽

Bao gồm cờ

Nếu bạn muốn bao gồm các cờ, như 🇵🇰 phạm vi Unicode sẽ từ 🇦 đến 🇿, vì vậy hãy thêm:

flags = regex.findall[u'[\U0001F1E6-\U0001F1FF]', text] 

cho chức năng ở trên và

🤔 🙈 😌 💕 👭 👙 👩🏾‍🎓 👨‍👩‍👦‍👦 😊 🙅🏽 🙅🏽
8.

Xem câu trả lời này cho "Một Regex Python phù hợp với lớp ký tự chỉ báo khu vực" để biết thêm thông tin về các lá cờ.

Cho các phiên bản
🤔 🙈 😌 💕 👭 👙 👩🏾‍🎓 👨‍👩‍👦‍👦 😊 🙅🏽 🙅🏽
3 mới hơn

Để làm việc với Emoji> = v1.2.0, bạn phải thêm một nhà xác định ngôn ngữ [ví dụ:

flags = regex.findall[u'[\U0001F1E6-\U0001F1FF]', text] 
0 như trong mã trên]:

emoji.UNICODE_EMOJI['en']

hc_dev

6.7311 huy hiệu vàng23 Huy hiệu bạc29 Huy hiệu đồng1 gold badge23 silver badges29 bronze badges

Đã trả lời ngày 12 tháng 3 năm 2018 lúc 19:05Mar 12, 2018 at 19:05

Sheldonzysheldonzysheldonzy

5,0019 Huy hiệu vàng43 Huy hiệu bạc79 Huy hiệu đồng9 gold badges43 silver badges79 bronze badges

7

Nếu bạn không muốn sử dụng thư viện bên ngoài, như một cách Pythonic, bạn có thể chỉ cần sử dụng các biểu thức thông thường và

flags = regex.findall[u'[\U0001F1E6-\U0001F1FF]', text] 
1 với Regex thích hợp để tìm các biểu tượng cảm xúc:

In [74]: import re
In [75]: re.findall[r'[^\w\s,]', a_list[0]]
Out[75]: ['🤔', '🙈', '😌', '💕', '👭', '👙']

Biểu thức chính quy

flags = regex.findall[u'[\U0001F1E6-\U0001F1FF]', text] 
2 là một lớp ký tự phủ định phù hợp với bất kỳ ký tự nào không phải là ký tự từ, khoảng trắng hoặc dấu phẩy.

Như tôi đã đề cập trong nhận xét, một văn bản thường chứa các ký tự từ và dấu câu sẽ dễ dàng xử lý theo phương pháp này, đối với các trường hợp khác, bạn có thể chỉ cần thêm chúng vào lớp ký tự theo cách thủ công. Lưu ý rằng vì bạn có thể chỉ định một loạt các ký tự trong lớp ký tự, bạn thậm chí có thể làm cho nó ngắn hơn và linh hoạt hơn.

Một giải pháp khác là thay vì một lớp ký tự bị phủ định loại trừ các ký tự không phải emji sử dụng một lớp ký tự chấp nhận biểu tượng cảm xúc [

flags = regex.findall[u'[\U0001F1E6-\U0001F1FF]', text] 
3 mà không có
flags = regex.findall[u'[\U0001F1E6-\U0001F1FF]', text] 
4]. Vì có rất nhiều biểu tượng cảm xúc với các giá trị unicode khác nhau, bạn chỉ cần thêm các phạm vi vào lớp ký tự. Nếu bạn muốn khớp nhiều biểu tượng cảm xúc thì đây là một tài liệu tham khảo tốt có chứa tất cả các biểu tượng cảm xúc tiêu chuẩn với phạm vi tương ứng cho các biểu tượng cảm xúc khác nhau //apps.timwhitlock.info/emoji/tables/unicode:

Đã trả lời ngày 31 tháng 3 năm 2017 lúc 18:20Mar 31, 2017 at 18:20

MazdakmazdakMazdak

102K18 Huy hiệu vàng157 Huy hiệu bạc183 Huy hiệu đồng18 gold badges157 silver badges183 bronze badges

7

import emojis
new_list = emojis.get['🤔 🙈 me así, bla es se 😌 ds 💕👭👙']
print[new_list]

output>>>{'😌', '🙈', '👭', '💕', '🤔', '👙'}

Yudhiesh

5,8353 huy hiệu vàng11 Huy hiệu bạc38 Huy hiệu đồng3 gold badges11 silver badges38 bronze badges

Đã trả lời ngày 15 tháng 9 năm 2020 lúc 20:52Sep 15, 2020 at 20:52

GaneshganeshGanesh

1011 Huy hiệu bạc2 Huy hiệu đồng1 silver badge2 bronze badges

1

Câu trả lời được xếp hạng hàng đầu không phải lúc nào cũng hoạt động. Ví dụ, biểu tượng cảm xúc cờ sẽ không được tìm thấy. Xem xét chuỗi:

s = u'Hello \U0001f1f7\U0001f1fa hello'

Điều gì sẽ hoạt động tốt hơn là

import emoji
emojis_list = map[lambda x: ''.join[x.split[]], emoji.UNICODE_EMOJI.keys[]]
r = re.compile['|'.join[re.escape[p] for p in emojis_list]]
print[' '.join[r.findall[s]]]

Đã trả lời ngày 1 tháng 11 năm 2017 lúc 21:43Nov 1, 2017 at 21:43

user594836user594836user594836

Huy hiệu 611 Bạc1 Huy hiệu Đồng1 silver badge1 bronze badge

Bước 1: Đảm bảo rằng văn bản của bạn được giải mã trên UTF-8

flags = regex.findall[u'[\U0001F1E6-\U0001F1FF]', text] 
5 Make sure that your text it's decoded on utf-8
flags = regex.findall[u'[\U0001F1E6-\U0001F1FF]', text] 
5

Bước 2: Xác định vị trí tất cả các biểu tượng cảm xúc khỏi văn bản của bạn, bạn phải phân tách ký tự văn bản bằng ký tự

flags = regex.findall[u'[\U0001F1E6-\U0001F1FF]', text] 
6 Locate all emoji from your text, you must separate the text character by character
flags = regex.findall[u'[\U0001F1E6-\U0001F1FF]', text] 
6

Bước 3: Lưu tất cả các biểu tượng cảm xúc trong danh sách

flags = regex.findall[u'[\U0001F1E6-\U0001F1FF]', text] 
7 Ví dụ đầy đủ Bellow: Saves all emoji in a list
flags = regex.findall[u'[\U0001F1E6-\U0001F1FF]', text] 
7
full example bellow:

import emoji
import regex

def split_count[text]:

    emoji_list = []
    data = regex.findall[r'\X', text]
    for word in data:
        if any[char in emoji.UNICODE_EMOJI['en'] for char in word]:
            emoji_list.append[word]
    
    return emoji_list
0

Nếu bạn muốn xóa khỏi văn bản

import emoji
import regex

def split_count[text]:

    emoji_list = []
    data = regex.findall[r'\X', text]
    for word in data:
        if any[char in emoji.UNICODE_EMOJI['en'] for char in word]:
            emoji_list.append[word]
    
    return emoji_list
1

Đã trả lời ngày 25 tháng 5 năm 2018 lúc 13:17May 25, 2018 at 13:17

Một cách khác để làm điều đó bằng cách sử dụng biểu tượng cảm xúc là sử dụng

flags = regex.findall[u'[\U0001F1E6-\U0001F1FF]', text] 
8 và chuyển đổi chúng thành các biểu diễn văn bản của biểu tượng cảm xúc.

Ví dụ: 😀 sẽ được chuyển đổi thành

flags = regex.findall[u'[\U0001F1E6-\U0001F1FF]', text] 
9, v.v.

Sau đó tìm tất cả các mẫu

emoji.UNICODE_EMOJI['en']
0 và sử dụng
emoji.UNICODE_EMOJI['en']
1 trên chúng.

import emoji
import regex

def split_count[text]:

    emoji_list = []
    data = regex.findall[r'\X', text]
    for word in data:
        if any[char in emoji.UNICODE_EMOJI['en'] for char in word]:
            emoji_list.append[word]
    
    return emoji_list
2

Đây có thể là một cách dư thừa nhưng đó là một ví dụ về cách sử dụng

emoji.UNICODE_EMOJI['en']
1 và
flags = regex.findall[u'[\U0001F1E6-\U0001F1FF]', text] 
8.

Đã trả lời ngày 17 tháng 9 năm 2019 lúc 8:22Sep 17, 2019 at 8:22

Phani Rithvijphani RithvijPhani Rithvij

3.6153 Huy hiệu vàng25 Huy hiệu bạc51 Huy hiệu Đồng3 gold badges25 silver badges51 bronze badges

Giải pháp để có được chính xác những gì Tumbleweed yêu cầu, là sự pha trộn giữa câu trả lời được xếp hạng hàng đầu và câu trả lời của User594836. Đây là mã phù hợp với tôi trong Python 3.6.

import emoji
import regex

def split_count[text]:

    emoji_list = []
    data = regex.findall[r'\X', text]
    for word in data:
        if any[char in emoji.UNICODE_EMOJI['en'] for char in word]:
            emoji_list.append[word]
    
    return emoji_list
3

learn2day

1.4261 Huy hiệu vàng14 Huy hiệu bạc17 Huy hiệu đồng1 gold badge14 silver badges17 bronze badges

Đã trả lời ngày 22 tháng 1 năm 2018 lúc 7:09Jan 22, 2018 at 7:09

Trước hết bạn cần để cài đặt điều này:

import emoji
import regex

def split_count[text]:

    emoji_list = []
    data = regex.findall[r'\X', text]
    for word in data:
        if any[char in emoji.UNICODE_EMOJI['en'] for char in word]:
            emoji_list.append[word]
    
    return emoji_list
4

Bây giờ chúng ta có thể viết mã sau:

import emoji
import regex

def split_count[text]:

    emoji_list = []
    data = regex.findall[r'\X', text]
    for word in data:
        if any[char in emoji.UNICODE_EMOJI['en'] for char in word]:
            emoji_list.append[word]
    
    return emoji_list
5

Nếu chúng ta in đầu ra text_de là:

import emoji
import regex

def split_count[text]:

    emoji_list = []
    data = regex.findall[r'\X', text]
    for word in data:
        if any[char in emoji.UNICODE_EMOJI['en'] for char in word]:
            emoji_list.append[word]
    
    return emoji_list
6

Bây giờ chúng ta có thể sử dụng Regex để tìm biểu tượng cảm xúc.

import emoji
import regex

def split_count[text]:

    emoji_list = []
    data = regex.findall[r'\X', text]
    for word in data:
        if any[char in emoji.UNICODE_EMOJI['en'] for char in word]:
            emoji_list.append[word]
    
    return emoji_list
7

Nếu chúng ta in LIS_EMOJI, đầu ra:

import emoji
import regex

def split_count[text]:

    emoji_list = []
    data = regex.findall[r'\X', text]
    for word in data:
        if any[char in emoji.UNICODE_EMOJI['en'] for char in word]:
            emoji_list.append[word]
    
    return emoji_list
8

Vì vậy, chúng ta có thể sử dụng chức năng tham gia:

import emoji
import regex

def split_count[text]:

    emoji_list = []
    data = regex.findall[r'\X', text]
    for word in data:
        if any[char in emoji.UNICODE_EMOJI['en'] for char in word]:
            emoji_list.append[word]
    
    return emoji_list
9

Nếu bạn muốn xóa biểu tượng cảm xúc, bạn có thể sử dụng mã sau:

line = ["🤔 🙈 me así, se 😌 ds 💕👭👙 hello 👩🏾‍🎓 emoji hello 👨‍👩‍👦‍👦 how are 😊 you today🙅🏽🙅🏽"]

counter = split_count[line[0]]
print[' '.join[emoji for emoji in counter]]
0

Đã trả lời ngày 16 tháng 5 năm 2020 lúc 16:13May 16, 2020 at 16:13

line = ["🤔 🙈 me así, se 😌 ds 💕👭👙 hello 👩🏾‍🎓 emoji hello 👨‍👩‍👦‍👦 how are 😊 you today🙅🏽🙅🏽"]

counter = split_count[line[0]]
print[' '.join[emoji for emoji in counter]]
1

Đây là một giải pháp tốt hơn khi làm việc với các bộ dữ liệu lớn vì bạn không phải lặp qua tất cả các biểu tượng cảm xúc mỗi lần. Tìm thấy điều này để cho tôi kết quả tốt hơn :]

Đã trả lời ngày 31 tháng 1 năm 2019 lúc 1:21Jan 31, 2019 at 1:21

Đây là một tùy chọn khác sử dụng

emoji.UNICODE_EMOJI['en']
4 và
emoji.UNICODE_EMOJI['en']
5:

line = ["🤔 🙈 me así, se 😌 ds 💕👭👙 hello 👩🏾‍🎓 emoji hello 👨‍👩‍👦‍👦 how are 😊 you today🙅🏽🙅🏽"]

counter = split_count[line[0]]
print[' '.join[emoji for emoji in counter]]
2

Sản lượng này:

line = ["🤔 🙈 me así, se 😌 ds 💕👭👙 hello 👩🏾‍🎓 emoji hello 👨‍👩‍👦‍👦 how are 😊 you today🙅🏽🙅🏽"]

counter = split_count[line[0]]
print[' '.join[emoji for emoji in counter]]
3

Hoặc, để xem các cụm đồ họa:

line = ["🤔 🙈 me así, se 😌 ds 💕👭👙 hello 👩🏾‍🎓 emoji hello 👨‍👩‍👦‍👦 how are 😊 you today🙅🏽🙅🏽"]

counter = split_count[line[0]]
print[' '.join[emoji for emoji in counter]]
4

Năng suất

line = ["🤔 🙈 me así, se 😌 ds 💕👭👙 hello 👩🏾‍🎓 emoji hello 👨‍👩‍👦‍👦 how are 😊 you today🙅🏽🙅🏽"]

counter = split_count[line[0]]
print[' '.join[emoji for emoji in counter]]
5

Đã trả lời ngày 30 tháng 5 năm 2021 lúc 21:59May 30, 2021 at 21:59

Carlskycarlskycarlsky

681 Huy hiệu bạc6 Huy hiệu đồng1 silver badge6 bronze badges

OK - Tôi đã gặp vấn đề tương tự và tôi đã giải quyết một giải pháp không yêu cầu bạn nhập bất kỳ thư viện nào [như Emoji hoặc RE] và là một dòng mã duy nhất. Nó sẽ trả về tất cả các biểu tượng cảm xúc trong chuỗi:

line = ["🤔 🙈 me así, se 😌 ds 💕👭👙 hello 👩🏾‍🎓 emoji hello 👨‍👩‍👦‍👦 how are 😊 you today🙅🏽🙅🏽"]

counter = split_count[line[0]]
print[' '.join[emoji for emoji in counter]]
6

Điều này cho phép tôi tạo ra một giải pháp trọng lượng nhẹ và tôi hy vọng nó sẽ giúp tất cả các bạn. Trên thực tế - tôi cần một loại sẽ lọc ra bất kỳ biểu tượng cảm xúc nào trong một chuỗi - và đó giống như mã ở trên nhưng với một thay đổi nhỏ:

line = ["🤔 🙈 me así, se 😌 ds 💕👭👙 hello 👩🏾‍🎓 emoji hello 👨‍👩‍👦‍👦 how are 😊 you today🙅🏽🙅🏽"]

counter = split_count[line[0]]
print[' '.join[emoji for emoji in counter]]
7

Dưới đây là một ví dụ về nó trong hành động:

line = ["🤔 🙈 me así, se 😌 ds 💕👭👙 hello 👩🏾‍🎓 emoji hello 👨‍👩‍👦‍👦 how are 😊 you today🙅🏽🙅🏽"]

counter = split_count[line[0]]
print[' '.join[emoji for emoji in counter]]
8

Đã trả lời ngày 29 tháng 8 năm 2018 lúc 13:00Aug 29, 2018 at 13:00

1

Chức năng này mong đợi một chuỗi vì vậy việc chuyển đổi danh sách đầu vào thành chuỗi

line = ["🤔 🙈 me así, se 😌 ds 💕👭👙 hello 👩🏾‍🎓 emoji hello 👨‍👩‍👦‍👦 how are 😊 you today🙅🏽🙅🏽"]

counter = split_count[line[0]]
print[' '.join[emoji for emoji in counter]]
9

Đã trả lời ngày 19 tháng 3 năm 2019 lúc 9:29Mar 19, 2019 at 9:29

AmaramarAmar

Phù hiệu bằng đồng 9088 bronze badges

Nếu một thư viện có vẻ như quá mức cần thiết, hãy thử biểu thức chính quy này - nó hoạt động bằng cách khớp với biểu tượng cảm xúc dài nhất đầu tiên trong một sự thay thế lớn. Phân tích tất cả các biểu tượng cảm xúc, tất cả các tông màu da và tất cả các cờ. [v14.0] Thông tin thêm

🤔 🙈 😌 💕 👭 👙 👩🏾‍🎓 👨‍👩‍👦‍👦 😊 🙅🏽 🙅🏽
0

Đã trả lời ngày 26 tháng 10 năm 2021 lúc 18:06Oct 26, 2021 at 18:06

Scott Weaverscott WeaverScott Weaver

6.9952 Huy hiệu vàng29 Huy hiệu bạc42 Huy hiệu đồng2 gold badges29 silver badges42 bronze badges

Xây dựng trên Mohammed Terry Jack Câu trả lời chỉ hoạt động trong đó mỗi biểu tượng cảm xúc được ngăn cách bởi một không gian. Xem một phiên bản sửa đổi bên dưới đã xóa yêu cầu này:

🤔 🙈 😌 💕 👭 👙 👩🏾‍🎓 👨‍👩‍👦‍👦 😊 🙅🏽 🙅🏽
1

Kết quả dự kiến:

🤔 🙈 😌 💕 👭 👙 👩🏾‍🎓 👨‍👩‍👦‍👦 😊 🙅🏽 🙅🏽
2

Đã trả lời ngày 13 tháng 5 lúc 13:49May 13 at 13:49

Tất cả các biểu tượng cảm xúc Unicode với các điểm mã tương ứng của họ đều ở đây. Chúng là 1F600 đến 1F64F, vì vậy bạn chỉ có thể xây dựng tất cả chúng với một trình lặp giống như phạm vi.

Đã trả lời ngày 31 tháng 3 năm 2017 lúc 17:37Mar 31, 2017 at 17:37

Patrickpatrickpatrick

3.9766 huy hiệu vàng40 Huy hiệu bạc57 Huy hiệu đồng6 gold badges40 silver badges57 bronze badges

1

Làm thế nào để tôi nhìn thấy biểu tượng cảm xúc trong Python?

Chẳng hạn, biểu tượng cảm xúc của con người theo sau là "loại điều chỉnh biểu tượng cảm xúc Fitzpatrick" nên sửa đổi màu của biểu tượng cảm xúc trước đó; và một số biểu tượng cảm xúc được phân tách bằng "người tham gia chiều rộng bằng không" nên được đối xử như một ký tự duy nhất. Điều này sẽ kiểm tra xem nhân vật có phải là biểu tượng cảm xúc hay không.

Làm thế nào để bạn có được biểu tượng cảm xúc trong các văn bản?

Mở ứng dụng tin nhắn. Bắt đầu một tin nhắn mới hoặc mở một thông báo hiện tại. Nhấn vào trường đầu vào văn bản. Nhấn vào biểu tượng biểu tượng cảm xúc ở phía dưới bên trái của màn hình.Tap on the emoji icon on the lower left of the screen.

Làm cách nào để loại bỏ biểu tượng cảm xúc khỏi văn bản trong Python?

Explanation..
Dòng 1: Chúng tôi nhập chức năng sạch từ gói CleanText ..
Dòng 5: Chúng tôi cung cấp văn bản có biểu tượng cảm xúc trong đó ..
Dòng 8: Chúng tôi loại bỏ biểu tượng cảm xúc có trong văn bản.Khi tham số NO_EMOJI được đặt thành True, hàm sạch sẽ gọi hàm remove_emoji [] được xây dựng ..

Làm cách nào để chuyển đổi biểu tượng cảm xúc thành văn bản bằng Python?

Mô -đun Demoji cũng yêu cầu tải xuống dữ liệu ban đầu từ kho lưu trữ mã biểu tượng cảm xúc của Unicode Consortium vì chính danh sách biểu tượng cảm xúc thường được cập nhật và thay đổi.Khối mã dưới đây nên được sử dụng để tải xuống nêu trên: Python3. as the emoji list itself is frequently updated and changed. The below code block should be used for the above-mentioned download: Python3.

Bài Viết Liên Quan

Chủ Đề