おはようございます。csvファイルの中に日本語が混ざっていたらその部分を消す、というプログラムを書きたいです。
ですが、「セルの中に日本語が混じっているかどうか」の判定に手間取っています。
日本語は[^\x01-\x7E]
で表すことができるというところまでは調べたのですが、
「もしこのセルに日本語があれば消す」という判定文が書けません。
re.subを使えば正規表現を使って置換ができるというのですが、セルをうまく指定できないのです。
よろしくお願いしますorz
csv ファイルの中身
user_id,comment 1,Hi 2,World 3,Hello 5,こんにちは 4,Python 2,きょう 1,あゆむ 3,Sato 5,Flower 4,class 3,find
import csv import re # Regular expression import pandas as pd csv_ori = pd.read_csv('original.csv', sep=",") # csv_ori = open('original.csv', 'r') # csvo = csv_ori['comment'][1] # print(csvo) for i, index in csv_ori.iterrows(): print(i) re_csv = re.sub('[^\x01-\x7E]', "", csv_ori['comment'][index]) # コードここまで。あとはコメント。 """ 置換後の文字列 = re.sub(正規表現, 置換する文字列, 置換される文字列 [, 置換回数]) for index in csv_ori.iterrows(): ori = csv_ori['comment'][index] # if csv_ori['comment'][index] == '[^\x01-\x7E]' # ori = re.sub('[^\x01-\x7E]', '', ori) print(ori) for i, series in data_frame.iterrows(): # DataFrameオブジェクトのiterrows()メソッドでは、行番号とSeriesがリストとして返ってくる。 # 変数を2つ用意すると、それぞれに格納される。 print(i) print(series['columnA'], series['columnB']) for i, index in csv_ori.iterrows(): print(i) print(index['user_id'], index['comment']) """
できましたー(≧∇≦)b
日本語は[^\x01-\x7E]
ではなく[亜-熙ぁ-んァ-ヶ]
でした! opyon様、ありがとうございます。
import csv import re # Regular expression import pandas as pd import warnings warnings.filterwarnings('ignore') csv_ori = pd.read_csv('original.csv', sep=",") ja_l = [] for i, index in csv_ori.iterrows(): print('i: ' + str(i)) com = csv_ori.iloc[i]["comment"] ja = re.sub('[亜-熙ぁ-んァ-ヶ]', 'None', com) print(ja) ja_l.append(ja) print(ja_l) for index, row in csv_ori.iterrows(): csv_ori['comment'][index] = ja_l[index] csv_ori.to_csv('original.csv', index=False)
出力結果
Terminal
i: 0 Hi ... ...(略) i: 10 find ['Hi', 'World', 'Hello', 'NoneNoneNoneNoneNone', 'Python', 'NoneNoneNone', 'NoneNoneNone', 'Sato', 'Flower', 'class', 'find']
CSVファイル
user_id,comment 1,Hi 2,World 3,Hello 5,NoneNoneNoneNoneNone 4,Python 2,NoneNoneNone 1,NoneNoneNone 3,Sato 5,Flower 4,class 3,find
日本語を消したいのはなぜ?
tatsu99さまの質問より。
- 現在先生(Christian Mayer)についてもらってPythonを学習
- Pythonの基礎を学ぶことと並行して、実践演習課題もある。
- 実践演習課題としてフリーランス案件を選んでコードを書く、というものがある。
- 私がNeed a Python program to do some data cleaning to a csv fileを選択、そして日本語を抽出する正規表現でコケている。
- ちなみにcsvファイルは自分でそれっぽく作ってこのファイルを対象にしてコードを書く。
実践演習でいつも時間がアイスクリーム並みに溶けていきます^^;
回答2件
あなたの回答
tips
プレビュー