PythonにてWebスクレイピングを行っているのですが、一文の中に絵文字、特殊記号(♡など)のいずれかが混じっており、どちらの場合でも削除したいと思っております。
というのも、スクレイピングで取得したデータをCSVに出力する際に、エラーが起きてしまいます。
絵文字の削除については、
https://qiita.com/yoshimo123/items/85331d881aed9ad41020
↑こちらを参考にして成功しました。
絵文字があった場合でも、それを削除してCSVに書き出せるようにしてはいたのですが、
今度は特殊文字(今回はハート[環境依存文字])があったためか、以下のエラーが起こります。
UnicodeEncodeError: 'cp932' codec can't encode character '\u2661' in position 91: illegal multibyte sequence
コード(一部省略)は以下のような形です。
Python
1(前略) 2# 絵文字の削除 3def remove_emoji(stc_str): 4 return ''.join(c for c in stc_str if c not in emoji.UNICODE_EMOJI) 5 6# メイン処理 7def scraping() 8 with open("output.csv", "w") as f: 9 10 ##### データ取得処理(省略) ##### 11 12 # CSV書き出し 13 f.write(remove_emoji(data1[count]) + "," data2[count] "\n") 14 count += 1 15 16scraping()
このプログラムに、特殊記号を削除する処理を追加しました。
https://codeday.me/jp/qa/20190227/317129.html
https://hacknote.jp/archives/19937/
↑これらのサイトを参考に(というかほぼそのまんまですが)して、
Python
1# 特殊記号の除去 2def remove_specialcode(text): 3 unicodedata.normalize("NFKD", text).encode("ascii", "ignore") 4 5 #データ取得の処理のところで、 6 data1.append(remove_specialcode(str.get_text())) 7 8 # CSV書き出し 9 f.write(remove_emoji(data1[count]) + "," data2[count] "\n") 10 count += 1 11
このようにすると、以下のようなエラーが起きてしまいます。
TypeError: 'NoneType' object is not iterable
おそらく文字コードの問題なのかと思うのですが、正直なところ全くと言っていいほどわからないため、
申し訳ないですが、教えていただきたいです。
絵文字と特殊記号の両方を削除したうえで、CSVを出力させたいと思っております。
ご教示の程よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー