Best way to delimit a list?

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • dannywebster@googlemail.com

    Best way to delimit a list?

    Hi - I have a list returned from popen/readlines, and am wondering how
    to go about iterating over each item which was returned (rather than
    currently having the whole lot returned).

    so far:
    >>f=os.open(" ./get_hostnames") .readlines
    returns ['host1 host2 host3 ... hostN\n]'

    i'd like to be in a position to iterate through these, grabbing each
    host. I have played with transmuting to a str, and using split, and
    this works, but I get the subscript brackets from the list output as
    expected, as the list output is now a string literal, and this is not
    what I want - and I think it's a bit long-winded to do a search 'n
    replace on it - hence why I ask in the subject what's the best way.
    >>f=str(f)
    >>f.split()
    ["['host1","host2" , ... ,"hostN\n']"]


    Any help is highly appreciated

    ta

    dan.
  • castironpi@gmail.com

    #2
    Re: Best way to delimit a list?

    On May 13, 5:28 am, dannywebs...@go oglemail.com wrote:
    Hi - I have a list returned from popen/readlines, and am wondering how
    to go about iterating over each item which was returned (rather than
    currently having the whole lot returned).
    >
    so far:
    >
    >f=os.open("./get_hostnames") .readlines
    >
    returns ['host1 host2 host3 ... hostN\n]'
    >
    i'd like to be in a position to iterate through these, grabbing each
    host.  I have played with transmuting to a str, and using split, and
    this works, but I get the subscript brackets from the list output as
    expected, as the list output is now a string literal, and this is not
    what I want - and I think it's a bit long-winded to do a search 'n
    replace on it - hence why I ask in the subject what's the best way.
    >
    >f=str(f)
    >f.split()
    >
    ["['host1","host2" , ... ,"hostN\n']"]
    >
    Any help is highly appreciated
    >
    ta
    >
    dan.
    Bring up the Google Ring. Where you only wiggle fingers, it might pay
    to get jobs at home. All we up here would have to do would be
    schedule something. Make a decision is easy in talking. I think it
    would be easy to centralize the time the world's at and redistribute
    money. If all we'd do is normal life, this constrained, open markets
    would be easy to set up. It's just illegal to talk about pricing in
    2004 Microecon. classes.

    Comment

    • dannywebster@googlemail.com

      #3
      Re: Best way to delimit a list?

      On May 13, 11:28 am, dannywebs...@go oglemail.com wrote:
      Hi - I have a list returned from popen/readlines, and am wondering how
      to go about iterating over each item which was returned (rather than
      currently having the whole lot returned).
      >
      so far:
      >
      >f=os.open("./get_hostnames") .readlines
      >
      returns ['host1 host2 host3 ... hostN\n]'
      >
      i'd like to be in a position to iterate through these, grabbing each
      host. I have played with transmuting to a str, and using split, and
      this works, but I get the subscript brackets from the list output as
      expected, as the list output is now a string literal, and this is not
      what I want - and I think it's a bit long-winded to do a search 'n
      replace on it - hence why I ask in the subject what's the best way.
      >
      >f=str(f)
      >f.split()
      >
      ["['host1","host2" , ... ,"hostN\n']"]
      >
      Any help is highly appreciated
      >
      ta
      >
      dan.
      I did indeed mean "os.popen", no "os.open"

      Comment

      • Gabriel Genellina

        #4
        Re: Best way to delimit a list?

        En Tue, 13 May 2008 07:28:03 -0300, <dannywebster@g ooglemail.comes cribió:
        Hi - I have a list returned from popen/readlines, and am wondering how
        to go about iterating over each item which was returned (rather than
        currently having the whole lot returned).
        >
        so far:
        >
        >>>f=os.open( "./get_hostnames") .readlines
        >
        returns ['host1 host2 host3 ... hostN\n]'
        You meant readlines(), I presume. A file acts as its own iterator:

        f=os.open("./get_hostnames")
        try:
        for line in f:
        # do something with line
        finally:
        f.close()

        --
        Gabriel Genellina

        Comment

        • castironpi@gmail.com

          #5
          Re: Best way to delimit a list?

          On May 13, 5:46 am, dannywebs...@go oglemail.com wrote:
          On May 13, 11:28 am, dannywebs...@go oglemail.com wrote:
          >
          >
          >
          >
          >
          Hi - I have a list returned from popen/readlines, and am wondering how
          to go about iterating over each item which was returned (rather than
          currently having the whole lot returned).
          >
          so far:
          >
          >>f=os.open(" ./get_hostnames") .readlines
          >
          returns ['host1 host2 host3 ... hostN\n]'
          >
          i'd like to be in a position to iterate through these, grabbing each
          host.  I have played with transmuting to a str, and using split, and
          this works, but I get the subscript brackets from the list output as
          expected, as the list output is now a string literal, and this is not
          what I want - and I think it's a bit long-winded to do a search 'n
          replace on it - hence why I ask in the subject what's the best way.
          >
          >>f=str(f)
          >>f.split()
          >
          ["['host1","host2" , ... ,"hostN\n']"]
          >
          Any help is highly appreciated
          >
          ta
          >
          dan.
          >
          I did indeed mean "os.popen", no "os.open"- Hide quoted text -
          >
          - Show quoted text -
          I do indeed write a pretty fine real-time, low-bandwidth, game. It is
          like real-time chess, and seen the movie, Tron. Can't the P2Ps zip up
          in an hour?

          Comment

          • dannywebster@googlemail.com

            #6
            Re: Best way to delimit a list?

            On May 13, 11:51 am, "Gabriel Genellina" <gagsl-...@yahoo.com.a r>
            wrote:
            >
            You meant readlines(), I presume. A file acts as its own iterator:
            >
            f=os.open("./get_hostnames")
            try:
            for line in f:
            # do something with line
            finally:
            f.close()
            >
            --
            Gabriel Genellina
            Hi - thank you for your reply.

            I meant:

            f=os.popen("./get_hostnames") .readlines()

            So f is a list, rather than a file object, of which os.open would have
            returned (my initial typo redirected the missive of this post, sorry!)

            cheers


            Comment

            • Gabriel Genellina

              #7
              Re: Best way to delimit a list?

              En Tue, 13 May 2008 07:46:45 -0300, <dannywebster@g ooglemail.comes cribió:
              On May 13, 11:28 am, dannywebs...@go oglemail.com wrote:
              >Hi - I have a list returned from popen/readlines, and am wondering how
              >to go about iterating over each item which was returned (rather than
              >currently having the whole lot returned).
              >>
              >>f=os.open(" ./get_hostnames") .readlines
              >
              I did indeed mean "os.popen", no "os.open"
              Ouch, replace open with popen an my example is valid (but to get the
              meaning I intended to write, replace os.open with open...)

              --
              Gabriel Genellina

              Comment

              • castironpi@gmail.com

                #8
                Re: Best way to delimit a list?

                On May 13, 6:18 am, "Gabriel Genellina" <gagsl-...@yahoo.com.a r>
                wrote:
                En Tue, 13 May 2008 07:46:45 -0300, <dannywebs...@g ooglemail.comes cribió:
                >
                On May 13, 11:28 am, dannywebs...@go oglemail.com wrote:
                Hi - I have a list returned from popen/readlines, and am wondering how
                to go about iterating over each item which was returned (rather than
                currently having the whole lot returned).
                >
                >f=os.open("./get_hostnames") .readlines
                >
                I did indeed mean "os.popen", no "os.open"
                >
                Ouch, replace open with popen an my example is valid (but to get the  
                meaning I intended to write, replace os.open with open...)
                >
                --
                Gabriel Genellina
                Writing's fine, but don't the musicals suck?

                Comment

                • castironpi@gmail.com

                  #9
                  Re: Best way to delimit a list?

                  On May 13, 6:18 am, "Gabriel Genellina" <gagsl-...@yahoo.com.a r>
                  wrote:
                  En Tue, 13 May 2008 07:46:45 -0300, <dannywebs...@g ooglemail.comes cribió:
                  >
                  On May 13, 11:28 am, dannywebs...@go oglemail.com wrote:
                  Hi - I have a list returned from popen/readlines, and am wondering how
                  to go about iterating over each item which was returned (rather than
                  currently having the whole lot returned).
                  >
                  >f=os.open("./get_hostnames") .readlines
                  >
                  I did indeed mean "os.popen", no "os.open"
                  >
                  Ouch, replace open with popen an my example is valid (but to get the  
                  meaning I intended to write, replace os.open with open...)
                  >
                  --
                  Gabriel Genellina
                  Yes: fine! But, all we do is start a Tron ring, play Tron on
                  laptops. You have micro-divide currency, you can probably make
                  musicals -too-; and I don't have enough to say to get this...

                  BE TALKING!

                  Comment

                  • Wolfgang Grafen

                    #10
                    Re: Best way to delimit a list?

                    dannywebster@go oglemail.com schrieb:
                    Hi - I have a list returned from popen/readlines, and am wondering how
                    to go about iterating over each item which was returned (rather than
                    currently having the whole lot returned).
                    >
                    so far:
                    >
                    >>>f=os.open( "./get_hostnames") .readlines
                    >
                    returns ['host1 host2 host3 ... hostN\n]'
                    >
                    i'd like to be in a position to iterate through these, grabbing each
                    host. I have played with transmuting to a str, and using split, and
                    this works, but I get the subscript brackets from the list output as
                    expected, as the list output is now a string literal, and this is not
                    what I want - and I think it's a bit long-winded to do a search 'n
                    replace on it - hence why I ask in the subject what's the best way.
                    >
                    >>>f=str(f)
                    >>>f.split()
                    ["['host1","host2" , ... ,"hostN\n']"]
                    >
                    >
                    Any help is highly appreciated
                    >
                    untested:
                    f=" ".join(f)
                    f.split()

                    Best regards

                    Wolfgang

                    Comment

                    • J. Clifford Dyer

                      #11
                      Re: Best way to delimit a list?

                      On Tue, 2008-05-13 at 03:28 -0700, dannywebster@go oglemail.com wrote:
                      Hi - I have a list returned from popen/readlines, and am wondering how
                      to go about iterating over each item which was returned (rather than
                      currently having the whole lot returned).
                      >
                      so far:
                      >
                      >f=os.open("./get_hostnames") .readlines
                      >
                      returns ['host1 host2 host3 ... hostN\n]'
                      >
                      i'd like to be in a position to iterate through these, grabbing each
                      host. I have played with transmuting to a str, and using split, and
                      this works, but I get the subscript brackets from the list output as
                      expected, as the list output is now a string literal, and this is not
                      what I want - and I think it's a bit long-winded to do a search 'n
                      replace on it - hence why I ask in the subject what's the best way.
                      >
                      >f=str(f)
                      >f.split()
                      ["['host1","host2" , ... ,"hostN\n']"]
                      >
                      Instead of casting to a string, each element of your list is already a
                      string, so use that instead:

                      f = open("get_hostn ames")
                      hosts =[]

                      # gets each string one at a time.
                      for line in f:
                      # get rid of the pesky \n at the end
                      line = line.strip()
                      # separate the hostnames into a list
                      hosts += line.split(' ')

                      Comment

                      • Giuseppe Ottaviano

                        #12
                        Re: Best way to delimit a list?


                        On May 13, 2008, at 12:28 PM, dannywebster@go oglemail.com wrote:
                        Hi - I have a list returned from popen/readlines, and am wondering how
                        to go about iterating over each item which was returned (rather than
                        currently having the whole lot returned).
                        >
                        so far:
                        >
                        >>>f=os.open( "./get_hostnames") .readlines
                        >
                        returns ['host1 host2 host3 ... hostN\n]'
                        >
                        i'd like to be in a position to iterate through these, grabbing each
                        host. I have played with transmuting to a str, and using split, and
                        this works, but I get the subscript brackets from the list output as
                        expected, as the list output is now a string literal, and this is not
                        what I want - and I think it's a bit long-winded to do a search 'n
                        replace on it - hence why I ask in the subject what's the best way.
                        >
                        >>>f=str(f)
                        >>>f.split()
                        ["['host1","host2" , ... ,"hostN\n']"]
                        If the file is really big, you may want not to construct an actual
                        list with all the words, but instead use an iterator. If you define
                        the function

                        def ichain(seq):
                        for s in seq:
                        for x in s: yield x

                        (which is often useful and I don't think it has been included in
                        itertools) you can iterate lazily on the file:

                        hosts = ichain(s.split( ) for s in f)
                        for host in hosts:
                        # ...

                        HTH,
                        Giuseppe

                        Comment

                        • castironpi@gmail.com

                          #13
                          Re: Best way to delimit a list?

                          On May 13, 8:17 am, Giuseppe Ottaviano <giu...@gmail.c omwrote:
                          On May 13, 2008, at 12:28 PM, dannywebs...@go oglemail.com wrote:
                          >
                          >
                          >
                          >
                          >
                          Hi - I have a list returned from popen/readlines, and am wondering how
                          to go about iterating over each item which was returned (rather than
                          currently having the whole lot returned).
                          >
                          so far:
                          >
                          >>f=os.open(" ./get_hostnames") .readlines
                          >
                          returns ['host1 host2 host3 ... hostN\n]'
                          >
                          i'd like to be in a position to iterate through these, grabbing each
                          host.  I have played with transmuting to a str, and using split, and
                          this works, but I get the subscript brackets from the list output as
                          expected, as the list output is now a string literal, and this is not
                          what I want - and I think it's a bit long-winded to do a search 'n
                          replace on it - hence why I ask in the subject what's the best way.
                          >
                          >>f=str(f)
                          >>f.split()
                          ["['host1","host2" , ... ,"hostN\n']"]
                          >
                          If the file is really big, you may want not to construct an actual  
                          list with all the words, but instead use an iterator. If you define  
                          the function
                          >
                          def ichain(seq):
                                  for s in seq:
                                          for x in s: yield x
                          >
                          (which is often useful and I don't think it has been included in  
                          itertools) you can iterate lazily on the file:
                          >
                          hosts = ichain(s.split( ) for s in f)
                          for host in hosts:
                                  # ...
                          >
                          HTH,
                          Giuseppe- Hide quoted text -
                          >
                          - Show quoted text -
                          I am having trouble following, but I am not an always-rightter. Was
                          s.split( ) one of the things you wanted to do to a line, and likely a
                          really common one? I'm trying to approach problems impractically.

                          Now of course, if anything else is going on in the program, you will
                          need separate threads or separate interpreters/processes. Does Python
                          meet sufficiencies on threading? What file do we have to test it on?

                          Comment

                          • Peter Otten

                            #14
                            Re: Best way to delimit a list?

                            Giuseppe Ottaviano wrote:
                            def ichain(seq):
                                    for s in seq:
                                            for x in s: yield x
                            >
                            (which is often useful and I don't think it has been included in  
                            itertools) you can iterate lazily on the file:
                            Python 2.6 includes itertools.chain .from_iterable( ) with that functionality.

                            Peter

                            Comment

                            • castironpi@gmail.com

                              #15
                              Re: Best way to delimit a list?

                              On May 13, 8:32 am, Peter Otten <__pete...@web. dewrote:
                              Giuseppe Ottaviano wrote:
                              def ichain(seq):
                                      for s in seq:
                                              for x in s: yield x
                              >
                              (which is often useful and I don't think it has been included in  
                              itertools) you can iterate lazily on the file:
                              >
                              Python 2.6 includes itertools.chain .from_iterable( ) with that functionality.
                              >
                              Peter
                              Can you color the help manual with very fine shades of off-white to
                              ease reading? I was thinking a few pixels shy of red of white to
                              accentuate what are the class methods and which are not. I also have
                              an argument that net readability would decrease, but the sample sizes
                              on that kind of metric are a little brinky with privacy fears around
                              where I'm from. I just try to make Tron rings.

                              Comment

                              Working...