開発環境:jupyter lab
下記のurlを変数に代入すると「&」が「&」に変わってしまいます。
いくつか方法を試したのですが、上手くいかないので、ご教授いただけますと幸いです。
python
1url = "https://race.netkeiba.com/odds/index.html?type=b1&race_id=202105021201" 2print(url) 3# 結果 4#'https://race.netkeiba.com/odds/index.html?type=b1&race_id=202105021201'
試したこと➀ url を分割してつなげた
python
1url = "https://race.netkeiba.com/odds/index.html" + "?type=b1&race_id=202105021201" 2print(url) 3#結果 (変わらず) 4#"https://race.netkeiba.com/odds/index.html?type=b1&race_id=202105021201"
試したこと➁ &の前にバックスラッシュを付けた
python
1url = "h(ttps://race.netkeiba.com/odds/index.html?type=b1&race_id=202105021201" 2print(url) 3#結果(バックスラッシュが2つになった。ampの文字は消えなかった 4#'https://race.netkeiba.com/odds/index.html?type=b1\&race_id=202105021201'
試したこと➂ replace関数を使用して&を&に変換
x = "https://race.netkeiba.com/odds/index.html?type=b1&race_id=202105021201" print(x.replace("&","&")) #結果(;が2つになった) #'https://race.netkeiba.com/odds/index.html?type=b1&;race_id=202105021201'
x.replace("&","&") ⇒ x.replace("&","&") にすればいいのでは?
もしくは、どこにどのように代入しているか不明ですが、可能であれば html エンコードされないようにできませんか?
(& が html エンコードされると & になります)
「結果」と書いてあるものが、何をしてどうやって確認したものなのか? を想像するのが困難でした。
>>> url = "https://race.netkeiba.com/odds/index.html?type=b1&race_id=202105021201"
>>> print(url)
https://race.netkeiba.com/odds/index.html?type=b1&race_id=202105021201
当然ですが&は&のままです。
いつ、どうやって、urlの値を確かめましたか?
それまでの間にurlに何か操作はされていませんか?
確認方法が間違っています。
皆様、ご回答ありがとうございます。確認方法を変えて、画像を添付いたしました。結果は変わらない状況です。
print メソッドというのが何だか分かりませんが、追加で貼った画像を見る限り、引数の文字列内の & を & に html エンコードしているとしか思えないのですが。質問者さんの環境の特別仕様とか?
簡単には再現しそうにない、極めて環境に依存した問題に感じます。
OS,、Pythonのバージョン、可能ならインストールされている関連パッケージの全バージョン、使っているブラウザがなにか、あたりの情報が必要ではないかと思います。(それらを揃えてテストしても再現するかどうか? という微妙なラインかも)
まずは、別のブラウザで試す、アドオンなどがない素に近いブラウザで試す、あたりもチャレンジしてはどうでしょうか。
ローカルで jupyter lab を動かしているのでなければ、別のマシンから接続を試すなどもありかと。