- ベストアンサー
Pythonで改行を除去し、会社名を変更する方法と正規表現で数字を抜き出す方法
- Pythonのプログラムを使用して、改行を除去して会社名を変更する方法について教えてください。
- また、Pythonの正規表現を使用して、テキストから数字を抜き出す方法についても教えてください。
- 説明された方法を使用することで、改行を除去し、会社名を変更することができます。また、正規表現を使用することで、テキストから数字を抜き出すこともできます。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
Pythonは2.x系しかやってないので、3.x系だと少し違うかもしれません。 質問の場合、companyの文字列の最後に改行が含まれているのでしょう。 > company2= company +"(株)" の部分を < company2= company.rstrip() +"(株)" とすれば、company行末の空白文字(改行を含む)が除去されますので、改行されなくなると思います。 # 行頭の>や<は引用記号です。実際のプログラムには入れないでください 正規表現の方ですが import re r=re.compile(".*- (\d+)\..") としておいて x = r.match("Yahoo!・ユ・。・、・ハ・鵐ケ - 8872.q") とすると x.group(1)で文字列'8872'が取れます。 整数で取りたければint(x.group(1))としてください。
その他の回答 (3)
- rinkun
- ベストアンサー率44% (706/1571)
解釈するのがHTMLなら、正規表現で処理するよりhtmllib等のHTML解析器を使った方が後々修正などし易いと思う。 まあ、最初はちょっと勉強しないといけないでしょうけど。
お礼
ありがとうございます。 ちょっと勉強しなおしてきます。 丁寧な解説をありがとうございました。
- rinkun
- ベストアンサー率44% (706/1571)
ANo.2へのお礼について。 まず、ここの表示では行頭空白が削除されるので、全角空白でも使って書かないとPythonコードは読めないよ。 閑話休題。 行ごとに処理しているコードの中で次の行を読むのは正しく動作できないので止めた方が良い。フラグを立てておいて、繰り返しの初めにフラグチェックして書き出すとか、そういう方法で対応できそうだけど。
お礼
いろいろとありがとうございました。 ちょっと自分で十分に考えて見ます。 丁寧に解説をしてくださり誠にありがとうございました。
補足
ちょっと良くわからない質問ですみませんでした。 pythonの練習として http://charge.biz.yahoo.co.jp/report/sector33/brand_report/2730.html というサイトの <td align="center" bgcolor="#ffffee"><small>2009ヌッ3キ・/small></td> <td align="right"><small>803,004</small></td> <td align="right"><small>1,232</small></td> <td align="right"><small>11,751</small></td> <td align="right"><small>-13,506</small></td> </tr><tr bgcolor="#ffffff"> <td align="center" bgcolor="#ffffee"><small>2008ヌッ3キ・/small></td> <td align="right"><small>851,205</small></td> <td align="right"><small>8,480</small></td> <td align="right"><small>21,227</small></td> <td align="right"><small>6,754</small></td> の数値(803,004等)を年代別に抜き出したいのですが d = urllib.urlopen("http://charge.biz.yahoo.co.jp/report/sector33/brand_report/2730.html") txt=d.read() lines2 = txt.split("\n") としたのですがこの続きがイマイチわからないのですがどうしたら効率よく抜き出せますか?
- rinkun
- ベストアンサー率44% (706/1571)
ANo.1へのお礼に書かれた質問について。 「のような」「それ以外」というのがどんな文字列を想定しているのか分からないのでif条件が書けません。
お礼
少し整理したので見てもらえないでしょうか for line2 in lines2: if "あいうえお" in line2: frag=1 if frag==1: if "かきくけこ": (…) ここの(…)の部分に現在読み込んでいる行の次の行からprint文で書きだしたいのですが次の行というのはどうやって書けばよろしいでしょうか。
お礼
ありがとうございます。問題解決いたしました。 後1つ質問よろしいでしょうか。 Yahoo!・ユ・。・、・ハ・鵐ケ - 8801.t Yahoo!・ユ・。・、・ハ・鵐ケ - 8928.o Yahoo!・ユ・。・、・ハ・鵐ケ - 8999.t Yahoo!・ユ・。・、・ハ・鵐ケ - 3235.f のような文字列が現れた場合とそれ以外の文字列が現れた場合で処理を分岐させたいのですが、この場合 if… else と書きたいのですが…の部分はどう書けばよろしいでしょうか。 ・ユ・。・、・ハ・鵐ケ - の部分は半角です。