2014-03-28 64 views
0

我目前從Crunchbase獲取有關公司概述的信息。 API信息可從here獲取。Python中換行符的移除問題

在簡單的步驟中,我想獲取名稱,永久鏈接,描述和概述,並將其插入MySQL數據庫。 要做到這一點,我有以下代碼:

url = "http://api.crunchbase.com/v/1/company/%s.js?api_key=<insert_api_key>" % permalink 

i = 1 
TIME = 5 
TRYS = 3 
while True: 
    try: 
     fh = urllib2.urlopen(url) 
     cont = fh.read() 
     fh.close() 
     data = json.loads(cont) 

    except Exception as ex: 
     print ex 
     print "Sleep %d seconds to try again" % (TIME * i) 
     time.sleep(TIME * i) 
    i += 1 
    if i > TRYS: 
     INVALID.append(url) 
     data = None 

overview = data.get("overview") 
overview = strip_tags(overview).replace('\n','') 
sql_data = { 
    "name": data.get("name").replace('"', "'"), 
    "permalink": data.get("permalink", ""), 
    "description": data.get("description","").replace('\n',''), 
    "overview": overview 
} 

keys = sql_data.keys() 
#print keys 
sql = """insert into %s(%s) values (""" % (TABLE, "`".join(keys)) 

for index, k in enumerate(keys): 
    if index < len(keys)-1: 
     sql += '''"%s",''' % sql_data.get(k, "") 
    else: sql += sql_data.get(k,'') 
     sql += """)""" 

請注意,我將這段代碼的末尾添加strip_tags功能。

無論如何,我碰到了一個絆腳石。我試圖通過使用.replace('\n','')去除新行\n,使得U在overviewdescription上都這樣做。我也嘗試通過使用[\n]+刪除所有換行符。但我仍然在每一家公司都遇到錯誤。這樣的一個錯誤是:

(1064, '[34816] syntax error: syntax error near "Management"\nLINE: ...agement  software.","adventnet","AdventNet",Server Management...\n                ^') 
3: downloading adventnet failed 

打印出來的時候,公司的概況是:

艾德威特現在是百會ManageEngine的。

Founded in 1996, AdventNet has served a diverse range of enterprise IT, networking and telecom customers. 

AdventNet supplies server and network management software. 
insert into crunchbase_overview_company(overview`permalink`name`description) values  ("AdventNet is now Zoho ManageEngine. 

Founded in 1996, AdventNet has served a diverse range of enterprise IT, networking and  telecom customers. 

這顯然有新的行,即使明顯做了一些事情應該刪除它們!

有沒有人有任何建議,提示,提示指針如何處理這個問題?

地帶標籤功能:

from HTMLParser import HTMLParser 

class MLStripper(HTMLParser): 
def __init__(self): 
    self.reset() 
    self.fed = [] 
def handle_data(self, d): 
    self.fed.append(d) 
def get_data(self): 
    return ''.join(self.fed) 

def strip_tags(html): 
s = MLStripper() 
s.feed(html) 
return s.get_data() 
+0

這就是您在'overview = strip_tags(overview).replace('\ n','')'後打印(概覽)時所得到的結果嗎? – 2rs2ts

+0

我不理解。概述「AdventNet現在是Zoho ManageEngine」?或者是概述它後面的輸出塊?第一個顯然沒有新線。第二個是,但那不是你剝去新線的原因,是嗎? – CodeMonkey

+0

strip_tags確實做了什麼?如果我複製這個代碼沒有strip_tags,使用overview.replace('\ n','')工作得很好。 – dano

回答

0

你能不能嘗試更換回車嗎?

overview = strip_tags(overview).replace('\n','').replace('\r','') 

通常Windows會添加回車符(\ r)而不是換行符(\ n)。