文章中に以下のような改行が入ってしまっているURLがあります。
これを正しいURLになるよう置換したいと考えています。
以下例文を見てください。
これを直すために、
- 正規表現でURLをre.findallですべて抽出する
- for文回す
- re.findallを抽出したをre.subを使って置換なしURLにする
- 置換前の文章を前後一致で検索し、マッチした文字列を置換なしURLに置換する
この繰り返しをしたいのですが、以下のとおりに、うまくいきません。
例文
- 現状
○○を使って行きます。
詳しくは以下URLをご覧ください。
<https://teratail.com/que
stions/input>
また上記URL以外にも以下が参考になります。
[テストリンク]h(ttps://teratail.com/que
stions/output)
- 完成理想型
○○を使って行きます。
詳しくは以下URLをご覧ください。
https://teratail.com/questions/input
また上記URL以外にも以下が参考になります。
[テストリンク]h(ttps://teratail.com/questions/output)
実現したいこと
上記おかしな改行入りURLを改行なしURLに置換したい
困っていること
数十人が編集する文章のため、URLの挿入方法が複数あるため、抽出は出来ても、うまく置換ができずにいる。
実行すると、文章の最後まで一致してしまい、ほぼすべての文章が消えてしまう。
今やっていること
python
1 urls = re.findall(r'[[^]]+]([^)]+)', body, 2 flags=re.MULTILINE | re.DOTALL) 3 urls2 = re.findall( 4 r'<https://hogehoge[\s\S]*?>', body, flags=re.MULTILINE) 5 for n in urls2: 6 urls.append(n) 7 8 # 抽出したURLのリストを適切な形に直していく 9 if len(urls) != 0: 10 for i in urls: 11 url = i 12 print(i) 13 url = re.sub("\n", "", url) 14 url = re.sub("[>()]", "", url) 15 url = re.sub(".*https", "https", url) 16 url = re.sub("[.*]", "", url) 17 url = re.sub("\s", "", url) 18 url = re.sub(" ", "", url) 19 url = re.sub("<", "", url) 20 url = re.sub(">", "", url) 21 endText = url[-10:] 22 reg = "http[\s\S]*?" + endText 23 body = re.sub(reg, url, body)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。