Robert, Thanks to you and everyone else for the help. The "s.split('\x00', 1)[0] " solved the problem.
Thanks again, MDM Robert Kern wrote: > Michael wrote: > > I guess, I still don't see how this will work. I'm receiving a C > > zero-terminated string in my Python program as a 1K byte block (UDP > > datagram). If the string sent was "abc", then what I receive in Python > > is <a><b><c><0><garbage><garbage>...<last_garbage_byte>. How is Python > > going to know where in this 1K byte block the end of the string is? It > > seems that what I need to do is tell Python that the string ends at > > zero-relative index 3. What am I missing here? > > Nothing. This is what I would do: > > > In [34]: s > Out[34]: 'abc\x00garbage' > > In [35]: s.split('\x00', 1)[0] > Out[35]: 'abc' > > In [36]: s.split? > Type: builtin_function_or_method > Base Class: <type 'builtin_function_or_method'> > String Form: <built-in method split of str object at 0x6ada2c8> > Namespace: Interactive > Docstring: > S.split([sep [,maxsplit]]) -> list of strings > > Return a list of the words in the string S, using sep as the > delimiter string. If maxsplit is given, at most maxsplit > splits are done. If sep is not specified or is None, any > whitespace string is a separator. > > > Using the maxsplit argument saves split from having to do unnecessary work > splitting the garbage portion if there are nulls there, too. > > -- > Robert Kern > > "I have come to believe that the whole world is an enigma, a harmless enigma > that is made terrible by our own mad attempt to interpret it as though it > had > an underlying truth." > -- Umberto Eco -- http://mail.python.org/mailman/listinfo/python-list