Split function for host:port in standard lib

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • =?ISO-8859-1?Q?Michael_Str=F6der?=

    Split function for host:port in standard lib

    HI!

    Is there a function in the standard lib which can be used to split a
    string containg 'host:port' into a tuple (host,port) and also does this
    reliably for IPv6 addresses?

    Ciao, Michael.
  • Manuel Ebert

    #2
    Re: Split function for host:port in standard lib

    -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA1

    AFAIK port names cannot contain any colons, so python2.5's
    'host:port' .rsplit(':') should do the job. On < 2.5 you probably
    need to do something like
    s = addr.rindex(':' )
    host, port = addr[:s], addr[s+1:]

    Best,
    Manuel


    On Aug 26, 2008, at 1:31 PM, Michael Ströder wrote:
    HI!
    >
    Is there a function in the standard lib which can be used to split
    a string containg 'host:port' into a tuple (host,port) and also
    does this reliably for IPv6 addresses?
    >
    Ciao, Michael.
    --

    >
    -----BEGIN PGP SIGNATURE-----
    Version: GnuPG v1.4.7 (Darwin)

    iD8DBQFIs/KjcZ70OCIgLecRA lfpAJ9aTgw5sADV KHXHTahzE+4zyuT ZhACghNi6
    eYyGqdIl8ONJxzn wJYZ78Cc=
    =s8rW
    -----END PGP SIGNATURE-----

    Comment

    • =?ISO-8859-1?Q?Michael_Str=F6der?=

      #3
      Re: Split function for host:port in standard lib

      Manuel Ebert wrote:
      On Aug 26, 2008, at 1:31 PM, Michael Ströder wrote:
      >Is there a function in the standard lib which can be used to split a
      >string containg 'host:port' into a tuple (host,port) and also does
      >this reliably for IPv6 addresses?
      >
      AFAIK port names cannot contain any colons, so python2.5's 'host:port'
      .rsplit(':') should do the job. On < 2.5 you probably need to do
      something like
      s = addr.rindex(':' )
      host, port = addr[:s], addr[s+1:]
      Manuel, thanks for answering. But I already thought about this approach.
      I should have mentioned that I'd like to return None for a missing port
      though. Note the :: in the IPv6 addresses.

      Examples:
      'localhost:389' -('localhost',38 9)
      'localhost' -('localhost',No ne)

      Examples IPv4 addresses:
      '127.0.0.1' -('127.0.0.1',No ne)

      Examples IPv6 addresses:
      '::1:389' -('::1',389)
      '::1' -('::1',None)

      Ciao, Michael.

      Comment

      • Hartmut Goebel

        #4
        Re: Split function for host:port in standard lib

        Michael Ströder schrieb:
        Examples IPv6 addresses:
        '::1:389' -('::1',389)
        '::1' -('::1',None)
        These are wrong, see http://tools.ietf.org/html/rfc2732 ("Format for
        Literal IPv6 Addresses in URL's§).

        Correct formats are:
        [::1]:389
        [::1]

        Comment

        Working...