reモジュールを使って下記を正規表現したいのですが、ご教授ください。
あるcsvを読み込み。
1レコード10カラムのデータとします。
8カラム目以降は空白に置換したいです。
8カラム目移行は値がある場合とない場合が存在します。
例
1,2,3,4,5,6,7,8,9,10⇒1,2,3,4,5,6,7
1,2,3,4,5,6,7,,,⇒1,2,3,4,5,6,7
みたいな感じで置換したいと考えています。
数値以外の文字が入る場合もありますが、「,」は入りません。
下記で一括置換できないでしょうか。
ファイル一気に読込 with open(file_path) as file: data_lines = file.read() #1,2,3,4,5,6,7,8,9,10⇒1,2,3,4,5,6,7,8,9,10 #1,2,3,4,5,6,7,,,⇒1,2,3,4,5,6,7 data_lines = data_lines.replace(",,,", "") # 1,2,3,4,5,6,7,8,9,10 を 1,2,3,4,5,6,7にしたい。 data_lines = data_lines.replace("ここで何かしらの正規表現", "")
splitしてjoinすれば簡単ですが、なぜ正規表尾源でやりたいのですか?
上記方法も考えたのですが、1行ずつ処理をすると時間がかかってしまいました。
全レコード読み込んで、正規表現で一括置換できないか知りたい次第です。
正規表現を使っても一括変換はできませんよ?
一括っぽくやりたいのであれば、 pandas のDataFrameで処理とかでしょうか。
質問を修正しました。このreplaceを使った方法で、できないでしょうか?
そういう理由なら、正規表現を知りたいという質問ではなく、置き換え処理を高速化したいという質問にした方が、良い回答が得られるでしょう。
全ファイルを読み込んでreplaceすると、Pythonの処理ロジックではメモリ割当てあたりがネックになるでしょうね。
回答2件
あなたの回答
tips
プレビュー