2016-05-22 8 views
0

私がしようとしているのは、可変文字列としてウェブサイトのhtml応答を取得し、ドット(。)、数字(0-9)、コロン(: )。私はre.subとこの権利を得るように見えない。出来ますか ?urllibからのフィルタre re

import urllib.request 
import re 

ans = True 

while ans: 
    print(""" 
     - Menu Selection - 
     1. Automatic 
     2. Automatic w/Checker 
     3. Manual 
     4. Add to list 
     5. Exit 
     """) 
ans = input('Select Option : ') 

if ans =="1": 
    try : 
     with urllib.request.urlopen('http://www.mywebsite.net') as response: 
      html = response.read() 
      html = str(html) 
      html = re.sub(r'([a-z][A-Z])', '', html) 
      f = open('text.txt','a') 
      f.write(html) 
      f.close() 
      print('Data(1) saved.') 
      ans = True 
    except : 
      print('Error on first fetch.')  

これは、HTMLコード全体を出力し、いずれの文字も除外しません。 すべてのヘルプは高く評価され:)

+0

あなたがフィルターに何かをしようとした、あなたのプログラムを実行できるように貼り付けコードをご検討ください文字を出す? – glls

+0

は、コードの全体に入りました。私は、HTML = re.sub(R '([-z]は[A-Z])'、 ''、HTML)で試みられているが、これはまだ動作しません。 – dexray

答えて

1

はあなたが言及した3つのことを除外すると、次のようにパターンを作るために持っている - ここにHTMLがあなたの入力文字列である

re.sub('[^0-9\.:]', '', html) 
+0

これで解決しました。どうもありがとうございました。 – dexray

+0

まだ評判が足りません:| | 。私がそこに着くとすぐにやるよ。 – dexray

+0

:)問題ありません... – minocha

1

我々はhtml = re.sub('[0-9.:]', '', html)をしたいです。ので、すべての文字列関数は(Pythonでは不可能である)その場でそれらを修正するのではなく、新しい文字列を返します。文字列を変更する唯一の方法は、新しい文字列を構築することであるので、文字列はPythonで不変です。この新しい文字列は、ある変数に代入されなければなりません。そうしないと、永遠に失われます(例のように)。

+0

ありがとうございました。しかし、私はまだre.sub関数を意図したとおりに動作させることができません。 – dexray

+0

他の回答で@minochaで述べたように、私は、あなたの正規表現に誤りを逃しました。 –