我用下面的正則表達式從python的日文twitter中提取表情文本。python:從日文twitter文本中用正則表達式提取表情文本
// this is for extracting number, character, Japanese
text2 = r'[0-9A-Za-zぁ-んァ-ン一-龥]'
non_text = r'[^0-9A-Za-zぁ-んァ-ン一-龥]'
// this is for extracting text that are allowed in Japanese emoticons
allow_text = r'[ovっつ゜ニノ三二]'
hw_kana = r'[ヲ-゚]'
open_branket = r'[\(∩ (]'
close_branket = r'[\)∩ )]'
arround_face = r'(?:' + non_text + '|' + allow_text + ')*'
face = r'(?!(?:' + text2 + '|' + hw_kana + '){3,}).{3,}'
face_string = arround_face + open_branket + face + close_branket +
arround_face
p_face = re.compile(face_string)
string1 = 'ふう。お腹いっぱい(´•౪•`), 試験頑張るぞ\\\\ ٩(‘ω’)و ////'
string2 = '心の相談は メール [email protected] までご連絡ください'
string3 = 'ドーピング系浪人生(n=1)'
string4 = '橫浜は関內にある「 BAY らっきょ 」に初訪問してまいりました関東スープカレーブームの火付け役となったお店の「 人気NO.1 チキンカレー 」をいただきました(´∀`人)'
string5 = '鳥取県倉吉市 倉吉農業高校 3年食品科 (音楽部・茶道部) AKB48大ファン高校生!まゆゆ、中野鬱海ちゃん神推し m0326w。♥。・゚♡゚・。♥。i0820n~現在♥大好きだよ♥ AKBファンの方はフォローお願いします^-^ \n\n來春から新社會人・・・の予定(´・ω・`) '
string6 = 'うわ。。(-_-;)授業。運動會はなくなると?'
string7 = '毎月泊まっちゃえ♡親孝行*\(^o^)/*でも出來る時しとかないとだよ(o^^o)'
emoj1 = p_face.findall(string1)
emoj2 = p_face.findall(string2)
emoj3 = p_face.findall(string3)
emoj4 = p_face.findall(string4)
emoj5 = p_face.findall(string5)
emoj6 = p_face.findall(string6)
emoj7 = p_face.findall(string6)
print(emoj1)
print(emoj2)
print(emoj3)
print(emoj4)
print(emoj5)
print(emoj6)
print(emoj7)
但結果如下:
1. ['(´•౪•`), 試験頑張るぞ\\\\ ٩(‘ω’)و']
2. ['\u3000メール\u3000']
3. ['(n=1)']
4. ['「\u3000BAY\u3000']
5. ['(´・ω・`) ']
6. ['。。(-_-;)']
但也存在一些問題: 的字符串1,其實有兩種表情:
(´•౪•`) and \\\\ ٩(‘ω’)و ////
但結果只顯示一個表情符號哪兩個表情符號與其他日文文字一起。我只是想下面的列表中包括兩名錶情:
[ '(´•౪•`)',' \\\\ ٩(‘ω’)و ////']
其次,STRING5實際上♥·゚♡゚·♥和^ - ^也是表情,但這些情感不能被提取。由回答正則表達式。
另外,字符串2,字符串3和字符串4中沒有表情文本(メール和(n = 1)['BAY']不是表情符號),但是正則表達式模式已經提取了這些文本。你可以給我你手怎麼解決這個問題,謝謝! 請日本的表情:http://kaomojiya.com/kao/?other/line
我真的感謝您的意見@托馬斯Wilmotte。我正在確認,我會報告結果。 – tktktk0711
我確認後有一些問題。 – tktktk0711
1.我已更新添加了新字符串的問題4,請閱讀它,並且我發現如果'。'或表情圖標(空格將是\ u3000)後面有兩個或三個空格。認爲這是表情符號是錯誤的。 – tktktk0711