2015-03-26 2 views
0

Я использую Python 2.7. И я хочу преобразовать URL.Как сопоставить объект в python?

То, что я хотел бы, чтобы это

ВХОД:

HOGEHOGE<url>http://super.long.url.com</url>BARBAR<url>http://super.long.url.com</url>FUGAFAUGA 

* строка включает в себя японский

ВЫВОД:

HOGEHOGEhttp://short.urlBARBARhttp://short.url2FUGAFUGA 

Мой код здесь.

# -*- coding: utf-8 -*- 

import re 

def __make_shorten_url_text(text): 

    def make_shorten_url(m): 
     # (1)how to use it?? 
     long_url = m.compile('\g<1>') 
     import urllib 
     import bitly_api 
     login_name = 'my id' 
     api_key = 'my secret key' 
     bitly = bitly_api.Connection(login_name, api_key) 
     quote_url = urllib.quote(long_url.group(), ':/?&=') 
     try: 
      result = bitly.shorten(quote_url) 
     except: 
      return long_url 
     return result['url'].encode('utf-8') 

    shortened_url_text = re.sub(ur'<url>(.*?)</url>', make_shorten_url, text) 
    return shortened_url_text 

печати __make_shorten_url_text ('HOGE https://stackoverflow.com/posts/29250195/ Barbar')

Я использую bitly_api.

Я хочу получить URL-адрес, и я не знаю, как использовать '\ g < 1>' в MatchObject. Прокомментированный (1) в моем коде, что я не знаю, как исправить.

Не могли бы вы рассказать мне, как это исправить?

ВХОД:

JAPANESE_CHATACTER<url>https://stackoverflow.com/posts/29250195/</url>JAPANESE_CHATACTER 

в Python

ВЫВОД:

JAPANESE_CHATACTERhttp://bit.ly/1GXY6npJAPANESE_CHATACTER。 

в Django

ВЫВОД:

JAPANESE_CHATACTER&lt;url&gt;https://stackoverflow.com/posts/29250195/&lt;/url&gt;JAPANESE_CHATACTER 

он автоматически преобразуется.

ответ

0

Разве это не хорошо документировано на official documentation?

def make_shorten_url(m): 
    long_url = m.group(1) # Access the capture group here 
    import urllib 
    import bitly_api 
    login_name = 'my id' 
    api_key = 'my secret key' 
    bitly = bitly_api.Connection(login_name, api_key) 
          # .group() no more needed 
    quote_url = urllib.quote(long_url, ':/?&=') 
    try: 
     result = bitly.shorten(quote_url) 
    except: 
     return long_url 
    return result['url'].encode('utf-8') 
+0

спасибо! Ваш код работал нормально! – shinriyo

+0

@shinriyo Извините, меня не было. Ваша проблема решена? – Jerry

+0

да! Спасибо. Моя проблема заключалась в том, что я сам неправильно понял свой код. И это первый раз, когда вы узнаете свою страну, Маврикий. Я узнал, что есть много добрых народов. – shinriyo

Смежные вопросы