Pythonでテキストマイニングをしているのですが、Twitter上で取得したデータをcsvファイルに書き込もうとすると特定の機種依存文字などに対して
UnicodeEncodeError: 'cp932' codec can't encode character '\u2764' in position 29
: illegal multibyte sequence
以上のようなエラーが出ます。調べてみたところ、csvファイルに入力する際に文字コードの変換が起きておりうまく変換できない文字列があったことに対してエラーを吐いているようでした。
対応として全ての文字列をUTF-8に変換してから書き込んだりしてみましたが日本語が文字化けしてしまいました。
そこで、文字列の文字コードがcp932だった場合その文字列は書き込まないようにする(今回のテキストマイニングでは機種依存文字は有用でないため)プログラムにしようと考えています。
特定の文字列の文字コードを判定するにはどのような方法があるでしょうか。
詳しい方宜しくお願いします。
以下、該当コードの主要部分です。
f = open('test.csv','a',encoding='utf-8-sig') csvWriter = csv.writer(f) #TwitterIDからプロフィール文を取得、形態素解析 for num in range(2): if num == 1: sheet = sheet_2 for row in range(sheet.nrows): val = sheet.cell(row,col).value i = i+1 print (val) params = { "screen_name": val } responce = oath.get(url,params = params) tweet = json.loads(responce.text) user_description = tweet['description'] print("users_desc:",user_description) tokens = l.tokenize(user_description) #形態素解析及び名詞抽出 for token in tokens: partOfSpeech = token.part_of_speech.split(',')[0] if partOfSpeech == u'名詞': each_words.append(token.surface) words.append(each_words) print(each_words) csvWriter.writerow([num,each_words]) each_words = []
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/14 06:05
2017/12/14 06:13