2017-01-03 18 views
0

私はこのように見えるURLのリストを持っていて下さい:私がする必要がどのようなその中のクエリ文字列を含むすべてのURL

http://example.com/php?id=2 
https://example.com/? 
http://example.com/ip/admin/navigate? 
http://example.com/admin?page=2&id=3 
https://www.google.com/#q=query 

が含まれているもののクエリ文字列と出力のみのために、これらのURLをスキャンしていますそのクエリ。例えば、予想される出力は次のようになります。

http://example.com/php?id=2 
http://example.com/admin?page=2&id=3 

私はこれを行うためにアイデアを思い付いた:https://example.com/?

res = [] 

with open('textfile.txt', 'a+') as data: 
    for line in data.readlines(): 
     if '?' in line: 
      res.append(line) 
return res 

しかし、これはこのURLを含むことで?を持っているすべてをつかむだろう疑問符だけのものを避けるために、クエリ文字列ですべてのリンクを取得できる方法はありますか?

+2

を読んで?モードは 'r'でなければなりません。 – Barmar

+0

@Barmarただの例 – User9123

+0

@ User9123あなたは私の答えをチェックしましたか? – Dekel

答えて

1

をテストできます:あなたはあなただけだファイルに対して `+`モードを使用しているのはなぜ

import re 

query_regex = re.compile("(.*)[?|#](.*){1}\=(.*)") 
urls = """http://example.com/php?id=2 
https://example.com/? 
http://example.com/ip/admin/navigate? 
http://example.com/admin?page=2&id=3 
https://www.google.com/#q=query""".split("\n") 

for url in urls: 
    match = query_regex.match(url) 
    if match: 
     print(match.group()) 
1

簡単な方法は、疑問符が文字列であるかどうかを確認することではなく、最後の文字として:あなたはまた、正規表現または他の溶液を使用することができます

res = [] 

with open('textfile.txt', 'r') as data: 
    for line in data.readlines(): 
     if '?' in line and not line.endswith('?'): 
      res.append(line) 
return res 

、私はこれが最も簡単な1だと思います。

0

おそらくこれは間違った解決策につながるだろうが、あなたはまた、正規表現の使用=記号

res = [] 

with open('textfile.txt', 'a+') as data: 
    for line in data.readlines(): 
     if '=' in line: 
      res.append(line) 
return res 
関連する問題