【问题标题】:Python List RegexPython 列表正则表达式
【发布时间】:2012-09-02 06:05:11
【问题描述】:

我有一个来自股票网络抓取工具的列表,如下所示: [......', 'xlnx>XLNXYHOO

我怎样才能得到只有引号的字典?我知道这很简单,但我可以使用一些帮助。谢谢

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

【问题讨论】:

    标签: python regex list


    【解决方案1】:

    你有一个列表,而不是字典。此外,您不应将变量命名为 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']
    

    【讨论】:

    • @DSM 因为现在是凌晨 1 点 :)
    【解决方案2】:

    您应该使用 HTML 解析器(我总是推荐 BeautifulSoup)来解析 HTML,而不是使用正则表达式:

    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
    

    【讨论】:

    • 你的意思是 Beautifulsoup 和一个正则表达式 :-)
    【解决方案3】:

    类似这样的:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-12
      • 2011-08-06
      • 2013-02-07
      • 2016-09-27
      • 2020-10-15
      • 2023-03-08
      • 1970-01-01
      • 2013-11-24
      相关资源
      最近更新 更多