【问题标题】:Regular Expression to extract parts of Twitter query提取部分 Twitter 查询的正则表达式
【发布时间】:2012-11-06 16:53:26
【问题描述】:

我有以下字符串,我想从中提取 qgeocode 值。

 ?since_id=261042755432763393&q=salvia&geocode=39.862712%2C-75.33958%2C10mi

我试过下面的正则表达式。

expr = re.compile('\[\=\](.*?)\[\&\]')
vals = expr.match(str)

但是,vals 是 None。我也不确定之前如何找到一些东西,比如q==

【问题讨论】:

    标签: python regex python-2.7


    【解决方案1】:

    不需要正则表达式(使用 Python 3):

    >>> from urllib.parse import parse_qs
    >>> query = parse_qs(str[1:])
    >>> query
    {'q': ['salvia'], 'geocode': ['39.862712,-75.33958,10mi'], 'since_id': ['261042755432763393']}
    >>> query['q']
    ['salvia']
    >>> query['geocode']
    ['39.862712,-75.33958,10mi']
    

    显然,str 包含您的输入。

    由于(根据您的标签)您使用的是 Python 2.7,我认为您需要将 import 语句更改为:

    from urlparse import parse_qs
    

    如果你使用的是 2.6 之前的 Python,那么 import 语句是

    from cgi import parse_qs
    

    【讨论】:

      【解决方案2】:

      我认为不用正则表达式就可以轻松完成:

      string = '?since_id=261042755432763393&q=salvia&geocode=39.862712%2C-75.33958%2C10mi'
      parts = string[1:].split('&') # the [1:] is to leave out the '?'
      pairs = {}
      for part in parts:
          try:
              key, value = part.split('=')
              pairs[key] = value
          except:
              pass
      

      pairs应该包含字符串的所有键值对。

      【讨论】:

      • 无论是不是正则表达式,最好使用现有的,经过测试的代码,如 urllib。
      • 当然!我不是很熟悉。
      猜你喜欢
      • 2013-05-16
      • 1970-01-01
      • 2015-12-25
      • 1970-01-01
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      • 2013-07-18
      相关资源
      最近更新 更多