[問題] 截取中文字 資料清洗

作者: Pear888 (皮爾掰)   2017-11-21 22:57:16
小弟想要把網路上截取的留言做資料清洗
只留下中文字
在網路上看到以下編碼
#!/usr/bin/env python
# -*- encoding: utf8 -*-
import re
sample = u'I am from 美国。We should be friends. 朋友。'
for n in re.findall(ur'[\u4e00-\u9fff]+',sample):
print n
1.想請問這unicode是只有簡體字的範圍嗎
還是可以改成大五碼嗎
2.有其他推薦方法可以只留下中文字
去處全形標點符號跟表情符號嗎
感謝!
作者: skyHuan (Huan)   2017-11-21 23:37:00
用re.sub刪掉不要的符號呢chstring = re.sub(r'[a-zA-Z0-9(){}《》::%?=※\s+\.\!\/_$%^*(+\"\']+|[+——!,?、[email protected]#¥%……&*()。,「」-]+','',sample)
作者: Pear888 (皮爾掰)   2017-11-22 01:02:00
好像可以耶感謝,只剩表情符號這樣不能處理~~好像不行 中文字有的會變亂碼耶
作者: cyf0531 (46Celsius)   2017-11-22 17:52:00
我是用 Zhon punctuation 你可以試試
作者: vi000246 (Vi)   2017-11-22 18:12:00
你可以用負向匹配的 把不是中文的字元取代掉re.sub('[^\u4e00-\u9fff]+', '', s)
作者: TitanEric (泰坦)   2017-11-22 23:22:00
感覺樓上的方法不錯
作者: goldflower (金色小黃花)   2017-11-23 04:24:00
首先應該可以考慮搬家到python3了然後用cyf大說的zhon和string內的puctuation就能解大部分 最後利用table+translate的方式來做這方法應該是python中跑最快的 re稍慢一點像numpy jupyter pandas...不少都說以後不支援py2了
作者: Pear888 (皮爾掰)   2017-11-23 11:01:00
C大 G大可以示範一下zhon的作法嗎~小弟新手print re.sub(ur"[%s]+" %punctuation, "", line.decode("utf-8")) 沒有替代效果
作者: goldflower (金色小黃花)   2017-11-23 16:44:00
https://goo.gl/Uw6uuc 不過python2我記得語法要改呃為啥gist會被鎖啊 = = 晚點有空再弄https://tinyurl.com/y7dvolu9
作者: Pear888 (皮爾掰)   2017-11-24 11:05:00
用python3編譯可以了感謝!接著要處理emoji了~
作者: goldflower (金色小黃花)   2017-11-24 15:04:00
我發現我punctuation另一個沒建只用maxunicode哈哈這樣根本沒用到zhon的東西XD 反正就跟eng_table一樣

Links booklink

Contact Us: admin [ a t ] ucptt.com