2015-08-23 38 views
0

我是新來的蟒蛇麻煩,在我的Python代碼查找字符串

這是我嘗試

import urllib2 
email_id = input("enter the email id") 
content = urllib2.urlopen('https://somewebsite.com/uniqueEmail?email={email_id}.format(email_id=email_id)').read() 
print content 
if content.find('"uniqueEmail":false') == True: 
    print("email exists") 
else: 
    print("email doesnt exists") 

當打印內容的代碼執行我的網站會顯示

{"params":{"method":"GET","controller":"GlobalUsers","action":"uniqueEmail","email":"theemailaddress_entered"},"uniqueEmail":true} 

所以如果uniqueEmail根據電子郵件是否存在打印出真或假。

現在我的疑問是

我知道我做錯了在通過電子郵件ID變量通過在URL參數。

和第二個是如何檢查的價值是真的還是假的?

+1

'find()'不返回True或False。它返回一個數字。 [請查看文檔](https://docs.python.org/3/library/stdtypes.html#str.find)。更重要的是,這是JSON,你[可以解析](https://docs.python.org/3/library/json.html)。 – Kevin

回答

4

是的,你沒看錯在傳遞電子郵件ID變量,則.format()應outisde的字符串,而不是在它裏面。示例 -

content = urllib2.urlopen('https://somewebsite.com/uniqueEmail?email={email_id}'.format(email_id=email_id)).read() 

其次,如果你的網站返回類似的響應 -

{"params":{"method":"GET","controller":"GlobalUsers","action":"uniqueEmail","email":"theemailaddress_entered"},"uniqueEmail":true} 

這似乎是一個JSON響應,所以你應該分析它的JSON,使用json module然後,將返回你一本字典,從字典中你可以得到uniqueEmail信息。示例 -

content = urllib2.urlopen('https://somewebsite.com/uniqueEmail?email={email_id}'.format(email_id=email_id)).read() 

import json 
contentdict = json.loads(content) 
if contentdict.get('uniqueEmail': 
    print("email exists") 
else: 
    print("email doesnt exists") 

我使用dict.get()作爲返回None如果該鍵不存在,在這種情況下,這將意味着電子郵件不存在。


而且,由於使用的是Python 2.7版作爲從評論中可以看出 -

any idea why this error is being thrown now Traceback (most recent call last): File "C:/Python27/programs/email.py", line 2, in <module> email_id = input("enter email id ") File "<string>", line 1, in <module> NameError: name 'test' is not defined

您應該使用raw_input()而不是input()。示例 -

email_id = raw_input("enter the email id") 
+0

任何想法,爲什麼這個錯誤被拋出,現在 回溯(最近最後一次通話): 文件「C:/Python27/programs/email.py」,2號線,在 EMAIL_ID =輸入(「輸入電子郵件ID」 ) 文件「」,第1行,在 NameError:name'test'未定義 – Shashank

+0

您正在使用'python 2.7',使用'raw_input'。你也應該在你的問題中包含標籤中的版本。 –

+0

的raw_input很大制定出非常感謝:) – Shashank