is there a python equivalent for the ruby %w operator?
%w{a b c} creates an array with strings "a", "b", and "c" in ruby...
Thanks a lot
Regards,
antoine
>
> is there a python equivalent for the ruby %w operator?
> %w{a b c} creates an array with strings "a", "b", and "c" in ruby...
>
| >>> "a b c".split()
| ['a', 'b', 'c']
... appears to match your single example.
HTH,
John
I assume that
['a', 'b', 'c']
isn't what you are looking for. How does
'a b c'.split()
strike you?
--
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
The expression 'a b c'.split() creates the ['a', 'b', 'c'] list of str,
if that helps.
Also dir('a b c') briefly lists much of what
http://docs.python.org/lib/string-methods.html explains.
Also Google was curiously resistant to telling me where Ruby's %w is
documented.
Pat LaVarre
You would need to dig into your Google toolbar config and un-tick
"YAGNI filter".
bah, far to easy to understand...add a little line-noise, man,
and it will be closer to ruby/perl.
Maybe something like
>>> from string import split as _
>>> _("a b c")
['a', 'b', 'c']
or perhaps
>>> "a b c".split
>>> _()
['a', 'b', 'c']
to give it that perl/ruby-ish feel of terseness and obscurity.
And people wonder why I like python... :)
-tkc
Don't feel bad, you always have things like r'%s\%s' % (u'blah',
u'blah') and so on. But of course, it's only the other guys who are
evil / ugly / stupid. As the human torch says, "Flame On". :)
[Full disclosure: I like ruby _and_ I like python (gasp!), and see no
need to artificially criticize one or the other; I try rather to
utilize the strengths of both.]
Regards,
Jordan
Why would they want to make such an obscure API ? ... didn't they have
Python to learn from (I am truly amazed - nothing cynical ...just ...
why ?!!!!)
In ruby there are several special literal notations, just like python.
In ruby it goes like this:
%{blah} / %Q{blah} # same as "blah" but igornes " and '
%q{blah} # same as 'blah' but no interpolation
%w{blah blah} # same as "blah blah".split
%r{blah} # same as /blah/
%x{ls} # same as `ls`
Sometimes they are very useful, and sometimes they are cumbersome. It's
up to the programmer to implement them effectively.
Regards,
Jordan
Regards,
hg
Something wrong with "list('abc')"? Or is it too simple?!
Thorsten
But today ? what is the cost of replacing %w("blah blah") by
Hi_I_Want_To_Split_The_String_That_Follows( "blah blah")
It is quite unreliable for strings consisting of more than one char... ;)
Georg
How about r'blah', u'blah', """blah""", and '''blah'''. :)
Regards,
Jordan
C'mon, the last two really don't count.
wildemar
Some truth to that !
As far as I can tell this works for single characters only. You're not
able to split words, as in "one two three".split().
Regards,
antoine
And this is what Georg Brandl already posted. Sorry!
It does satisfy your example in your first posting nevertheless.
Thorsten
These are snatched straight from perl. In perl they are spelt
slightly differently
q{blah} r"""blah""" # not identical but similar
qq{blah} """blah""" # no interpolation in python so no direct concept
qw{blah blah} "blah blah".split()
qr{blah} re.compile(r"blah")
qx{ls} commands.getoutput("ls")
In perl (and maybe in ruby I don't know) the { } can be replaced with
any two identical chars, or the matching pair if bracketty, so q/blah/
or q(blah).
As a perl refugee, the only one I miss at all is qw{}, ie %w{} in ruby
the subject of this post.
In python when making __slots__ or module.__all__ you end up typing
lists of objects or methods and they turn out like this which is quite
a lot of extra typing
__slots__ = ["method1", "method2", "method3", "method4", "method5"]
You can of course write it like this
__slots__ = "method1 method2 method3 method4 method5".split()
which is nearly as neat as qw//, but not quite since the split() bit
comes at the end so it doesn't notify you that you have an array of
strings rather than a string.
I don't expect a replacement for %w{}, qw// to ever be added to
python, it is not the python way. And the python way is why I am now
a python programmer not a perl programmer!
--
Nick Craig-Wood <ni...@craig-wood.com> -- http://www.craig-wood.com/nick
> In python when making __slots__ or module.__all__ you end up typing
> lists of objects or methods and they turn out like this which is quite
> a lot of extra typing
>
> __slots__ = ["method1", "method2", "method3", "method4", "method5"]
>
>
For __all__ you can use a decorator to avoid retyping the function name at
all. e.g.
def public(f):
all = f.func_globals.setdefault('__all__', [])
all.append(f.__name__)
return f
@public
def foo(): pass
I don't use __slots__ much at all, and if you'd said "attribute1" etc. I'd
have understood, but I'm really curious why would you be listing any
methods in __slots__?
>A> Antoine De Groote wrote:
>>> Hi everybody,
>>>
>>> is there a python equivalent for the ruby %w operator?
>>> %w{a b c} creates an array with strings "a", "b", and "c" in ruby...
>>>
>>> Thanks a lot
>>> Regards,
>>> antoine
>A> Why would they want to make such an obscure API ? ... didn't they have
>A> Python to learn from (I am truly amazed - nothing cynical ...just ...
>A> why ?!!!!)
I think it is modeled after Perl.
--
Piet van Oostrum <pi...@cs.uu.nl>
URL: http://www.cs.uu.nl/~piet [PGP 8DAE142BE17999C4]
Private email: pi...@vanoostrum.org
Absolutely :-)
Nice one!
> I don't use __slots__ much at all, and if you'd said "attribute1" etc. I'd
> have understood, but I'm really curious why would you be listing any
> methods in __slots__?
Those should of course have been attributes - I noticed immediately
after posting ;-)
Aside: __slots__ is only really useful when you've created so many
objects you are running out of memory and you need to optimise memory
usage a bit. We got our app down to 1/3 of the memory usage by
putting in three __slots__
Yup, they are; perl had _some_ good ideas; no doubt. ;)
> In perl (and maybe in ruby I don't know) the { } can be replaced with
> any two identical chars, or the matching pair if bracketty, so q/blah/
> or q(blah).
Yes; same thing in ruby.
Regards,
Jordan
The latter is beginning to look like the Cocoa/NextStep framework.
Perhaps we should give up scripting languages for ObjC?
James