2012-09-08 148 views
2

我从一个股票网站刮板寻找像这样的列表: [...... ' 'XLNX> XLNX <',' YHOO> YHOO <“]Python列表正则表达式

怎么可以只用引号获得字典?我知道这很简单,但我可以使用一些帮助。谢谢

import urllib 
import re 

base_url = 'http://www.nasdaq.com/markets/indices/nasdaq-100.aspx' 
content = urllib.urlopen(base_url).read() 
list = re.findall('http://www.nasdaq.com/symbol/(.*)/a>', content) 
print list 

回答

2

你有一个列表,而不是一本词典。此外,您不应将变量名称list命名为内置变量名称。

>>> content 
['xlnx>XLNX<', 'yhoo>YHOO<'] 
>>> tickers = [] 
>>> for s in content: 
...  tickers.append(''.join(i for i in s if i.isupper())) 
... 
>>> tickers 
['XLNX', 'YHOO'] 
+0

为什么不能'.isupper()'? – DSM

+0

@DSM导致早上凌晨1点:) –

1

你应该用HTML解析器解析HTML(我总是建议BeautifulSoup),不与正则表达式:

import re, urllib2 
from BeautifulSoup import BeautifulSoup 

url = 'http://www.nasdaq.com/markets/indices/nasdaq-100.aspx' 
soup = BeautifulSoup(urllib2.urlopen(url)) 

for link in soup.findAll('a', href=re.compile('/symbol/'))[1:]: 
    print link.text 

输出:

ATVI 
ADBE 
AKAM 
ALXN 
ALTR 
AMZN 
AMGN 
APOL 
AAPL 
AMAT 
ADSK 
ADP 
AVGO 
BIDU 
BBBY 
BIIB 
BMC 
BRCM 
CHRW 
CA 
CELG 
CERN 
CHKP 
CSCO 
CTXS 
CTSH 
CMCSA 
COST 
DELL 
XRAY 
DTV 
DLTR 
EBAY 
ERTS 
EXPE 
EXPD 
ESRX 
FFIV 
FAST 
FISV 
FLEX 
FOSL 
GRMN 
GILD 
GOOG 
GMCR 
HSIC 
INFY 
INTC 
INTU 
ISRG 
KLAC 
KFT 
LRCX 
LINTA 
LIFE 
LLTC 
MRVL 
MAT 
MXIM 
MCHP 
MU 
MSFT 
MNST 
MYL 
NTAP 
NFLX 
NUAN 
NVDA 
NWSA 
ORLY 
ORCL 
PCAR 
PAYX 
PCLN 
PRGO 
QCOM 
RIMM 
ROST 
SNDK 
STX 
SHLD 
SIAL 
SIRI 
SPLS 
SBUX 
SRCL 
SYMC 
TXN 
VRSN 
VRTX 
VIAB 
VMED 
VOD 
WCRX 
WFM 
WYNN 
XLNX 
YHOO 
+0

你的意思是美丽和一个正则表达式:-) – 6502

+0

哈我需要得到b汤。感谢寿 – user1657121

1

事情是这样的:

>>> lis=['xlnx>XLNX<', 'yhoo>YHOO<'] 
>>> [x[x.index('>')+1:x.index('<')] for x in lis] 
['XLNX', 'YHOO']