やりたいこと
テキスト中のurlを削除しようと考えているのですがデータセットの中にスペルミスを含むものもあるためうまくいきません
今は
re.sub(r'https?://\S*','url',x)
xにテキストが入っています。
としているのですが、これでは
a = 'https : //www . gpo . gov/fdsys/pk'
のようにspaceが入っているもの
b = 'http(COLON)//hello'
c = 'http//aaa.c'
のように:がないものなど多数ありました。
これらを削除するにはどうしたらよいでしょうか
よろしくお願いします。
追記として
https(colon)(slash)(slash) gooogle(dot)org(slash)
のようなものもありました。
地道な手作業になるのでしょうか
そのデータがどのようなものかわかりませんが、URL に共通するルールは見いだせますか?
頭は http から始まるとして、URL の終了条件に「スペースまで」というのが使えないので、それ以外でなにか URL の終わりを判定できるルールがあれば、正規表現でかけます。
今の所(colon),(slash)は置換によりそれぞれ ./に変換できました。
ここからはhttp :// aaa/のようにurlの途中で空白が含まれていることがあるため、最後の/の後の文字列を読み込んだ後にurl全てを削除しようと考えています。
共通するデータとしては
http(s)から始まりいくつかの/最後に文字列のような感じです。
わかりにくかったらすみません。
そこそこ数があるため手作業だと難しそうです。最後のslash以降にspaceが存在している数は少なそうですのでそこのみを手作業にしてみたいと思います。pythonで実行しているのですが/があったら繰り返すという処理はどのように描けばよいのでしょうか
/ 以降は空白はないという前提で正規表現の例を回答に書きました。このサイト https://jex.im/regulex/ で正規表現が表す内容をチェックできます。
すいません。
ちょっと試した感じうまくいかない例があったので、少し考えます。
自分んもサイトで試させていただきます!
すみません、うまくいかない例が思いつかないのですがどのようなものがあるのでしょうか...
問題ないのであれば、それでよいと思います。
https : //www . gpo . gov/fdsys/pk http(COLON)//hello.com のように URL が2個並んでいた場合に1つのURLと認識されて置換されてしまいますが、そのようなケースがないのであればいいと思います。
二つ並ぶことはみたところ存在しないようです。親切にありがとうございました!!
回答1件
あなたの回答
tips
プレビュー