質問: [race_condition] f.write(",".join(cols) + "\n") f.close() ``` ### 試したこと 上記のプログラムは第36回エリザベス女王杯(G1)の結果をスクレイピングしております。 今回の苦慮しております芝右 外2200m / 天候 : 晴 / 芝 : 良 / 発走 : 15:40の部分は、netkeiba.com様のソースコードの170行目でございます。ノーブレークスペース (no-break space)のある文字列の対応については、ある程度は調べたのですが、わかりませんでした。 これを分割するスクリプトを御教示いただけますと幸いです。 よろしくお願いいたします。 ### 補足情報(言語/FW/ツール等のバージョンなど) python2.7
回答: この`芝右 外2200m / 天候 : 晴 / 芝 : 良 / 発走 : 15:40`の部分を 取り出すことはできると思うので、 あとはBeautifulSoupから切り離して、(netkeiba.comからも切り離して、) Pythonの文字列だけの問題と捉えて下さい。 (プログラミングにおいて、問題を分割して小さな単位にしてから解くというのは常套手段で重要です。) 質問もそこだけに絞ったほうが回答者の負担が減りますし、多くの方から回答が得られやすくなります。 回答ですが、 まずは、`&npsp;`は邪魔なだけなので、取り除いてしまいましょう。 特定の文字列を取り除くには、`string.replace()`メソッドを使います。 `string.replace(str, old, new[, maxreplace])` (7.1. string — 一般的な文字列操作 — Python 2.7.x ドキュメント) その次は、特定の区切り文字で分割すれば 分割するには、`string.split()`メソッドを使います。 `string.split(s[, sep[, maxsplit]])` (7.1. string — 一般的な文字列操作 — Python 2.7.x ドキュメント) 上記を踏まえて、`芝右 外2200m / 天候 : 晴 / 芝 : 良 / 発走 : 15:40`を `course= 芝右 外2200m 、weather=晴、course_condition=芝良 、start_time=15:40`に加工する部分だけの処理を書いてみましょう。 通常はこのような場合は関数を書いてしまうとすっきりします。 `replace()`や`split()`の例はいくらでも見つかりますので、上記リンクの説明で分からなければ他のサイトも調べてみて下さい。