2013-10-17 50 views
0

我需要一個正則表達式來從以下數據結構中取出一些數據。這些數據是一個JavaScript變量。我正在使用BeautifulSoup和Mechanize進行請求並解析頁面,但我沒有看到如何在沒有正則表達式的情況下獲得我所需要的內容。更多細節如下。Python正則表達式從數據結構中拉出多個數據片段

原始數據:

var d = [[909.0546875,842.3125,32429,'TownID: 32429','GREY','circle_grey.png',970,'goldpimp\'s city','','N/A'],[1434.8890625,1365.41484375,32143,'TownID: 32143','GREY','circle_grey.png',899,'1..','','N/A'],[1553.92265625,1117.43046875,32326,'TownID: 32326','GREY','circle_grey.png',522,'Avacyns Pantheon','','N/A'],[1305.17265625,1328.6421875,28927,'TownID: 28927','GREY','circle_grey.png',3554,'Furiocity','','N/A'],...(cont.) 

例如在第一行,我需要去拉TownID: 32429970goldpimp\'s city

我需要爲整個數據結構來獲取每個townID和相關做到這一點信息。對於新手問題抱歉,但是正則表達式真的讓我的大腦發抖。

+0

謝謝大家,我最終通過解析出腳本標記然後讓bash調用sed/awk/grep/tr來清理並輸出到命令行來得到這個工作。我知道它是一個貧民窟的做事方式,但是我編寫了主腳本來完成所有獲取和腳本標記解析,然後我編寫了另一個腳本,用命令行選項調用第一個腳本來執行最終解析。感謝所有的幫助。 – h33th3n

回答

2

d是一個列表,您可以通過索引訪問列表。那麼,爲什麼正則表達式?你不需要它。 爲了得到你的結果:

for city in d: 
    print "%s %s %s" % (city[3], city[6], city[7]) 

print語句打印在控制檯中的文本。每個%s將被替換(依次)來自右側組的字符串(第一個%s將替換爲city[3],第二個替換爲city[6],第三個替換爲city[7])。

編輯

OK,如果d來自一個Javascript源,您需要使用json.loads轉換爲Python數據,存儲它的結果在一個變量和訪問與早期的教方法(請參閱有關信息Python的json模塊here爲2.7和here爲3.3)。

+0

謝謝你的回答。你有沒有關於如何對變量進行jsonify的指針? – h33th3n

+0

也許從[這裏]偷看(http://stackoverflow.com/questions/5793540/how-to-convert-variables-into-json)? – SonicARG

+0

謝謝,我最終使用bash調用來清理輸出。儘管我發現在python腳本中使用bash調用是可以接受的,但是我編寫第二個腳本來調用第一個腳本的事實似乎有點貧民區,但是,嘿,它可能是一種黑客攻擊,但它可行! – h33th3n