473,390 Members | 1,091 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,390 software developers and data experts.

Converting a string to an array?

While working on a Jumble-esque program, I was trying to get a
string into a character array. Unfortunately, it seems to choke
on the following

import random
s = "abcefg"
random.shuffle(s)

returning

File "/usr/lib/python2.3/random.py", line 250, in shuffle
x[i], x[j] = x[j], x[i]
TypeError: object doesn't support item assignment

The closest hack I could come up with was

import random
s = "abcdefg"
a = []
a.extend(s)
random.shuffle(a)
s = "".join(a)

This lacks the beauty of most python code, and clearly feels like
there's somethign I'm missing. Is there some method or function
I've overlooked that would convert a string to an array with less
song-and-dance? Thanks,

-tim

Jan 12 '06 #1
6 3033
Tim Chase wrote:
The closest hack I could come up with was

import random
s = "abcdefg"
a = []
a.extend(s)
random.shuffle(a)
s = "".join(a)

This lacks the beauty of most python code, and clearly feels like
there's somethign I'm missing. Is there some method or function
I've overlooked that would convert a string to an array with less
song-and-dance? Thanks,

-tim


Would
import random
s = "abcdefg"
data = list(s)
random.shuffle(data)
"".join(data) 'bfegacd'


fit you better?
Jan 12 '06 #2
> >>> import random
>>> s = "abcdefg"
>>> data = list(s)
>>> random.shuffle(data)
>>> "".join(data)

'bfegacd'

fit you better?


Excellent! Thanks. I kept trying to find something like an
array() function. Too many languages, too little depth.

The program was just a short script to scramble the insides of
words to exercise word recognition, even when the word is mangled.

It's amazing how little code it takes to get this working.

When using it as a filter, if a downstream pipe (such as "head")
cuts it off, I get an error:

bash# ./scramble.py bigfile.txt | head -50

[proper output here]

Traceback (most recent call last):
File "./scramble.py", line 11, in ?
print r.sub(shuffleWord, line),
IOError: [Errno 32] Broken pipe

At the moment, I'm just wrapping the lot in a try/except block,
and ignoring the error. Is there a better way to deal with this
gracefully? If some more serious IO error occurred, it would be
nice to not throw that baby out with the bath-water. Is there a
way to discern a broken pipe from other IOError exceptions?

Thanks again.

-tim

import random, sys, re
r = re.compile("[A-Za-z][a-z]{3,}")
def shuffleWord(matchobj):
s = matchobj.group(0)
a = list(s[1:-1])
random.shuffle(a)
return "".join([s[0], "".join(a), s[-1]])
try:
for line in sys.stdin.readlines():
print r.sub(shuffleWord, line),
except IOError:
pass


Jan 12 '06 #3
Tim Chase wrote:
>>> import random
>>> s = "abcdefg"
>>> data = list(s)
>>> random.shuffle(data)
>>> "".join(data)

'bfegacd'

fit you better?


Excellent! Thanks. I kept trying to find something like an
array() function. Too many languages, too little depth.

from array import array
a = array('c', "abcdefgh")
a array('c', 'abcdefgh') import random
random.shuffle(a)
a array('c', 'gfecdabh') a.tostring()

'gfecdabh'

</F>

Jan 13 '06 #4
Tim Chase wrote:
While working on a Jumble-esque program, I was trying to get a string
into a character array. Unfortunately, it seems to choke on the following

import random
s = "abcefg"
random.shuffle(s)

returning

File "/usr/lib/python2.3/random.py", line 250, in shuffle
x[i], x[j] = x[j], x[i]
TypeError: object doesn't support item assignment


Yes, Python has had that same problem elsewhere, notably the
mutating methods 'sort' and 'reverse'. Those problems are now
reasonably well solved. What's really neat is that the names
of the new methods: 'sorted' and 'reversed', are adjectives
describing the return values we want, where 'sort' and
'reverse' are verbs, calling for procedures to be performed.
For sorting, we had the procedure 'sort', then added the pure
function 'sorted'. We had a 'reverse' procedure, and wisely
added the 'reversed' function.

Hmmm... what we could we possible do about 'shuffle'?
--
--Bryan
Jan 13 '06 #5
Tim Chase <py*********@tim.thechases.com> writes:
The closest hack I could come up with was

import random
s = "abcdefg"
a = []
a.extend(s)
random.shuffle(a)
s = "".join(a)


You could use

import random
s = list("abcdefg")
random.shuffle(s)
s = "".join(s)

which cuts down the clutter slightly.
Jan 13 '06 #6
[Bryan Olson]
...
For sorting, we had the procedure 'sort', then added the pure
function 'sorted'. We had a 'reverse' procedure, and wisely
added the 'reversed' function.

Hmmm... what we could we possible do about 'shuffle'?


'permuted' is the obvious answer, but that would leave us open to more
charges of hifalutin elitism, so the user-friendly and slightly risque
'jiggled' it is.

sorry-it-can't-be-'shuffled'-we-ran-out-of-'f's-ly y'rs - tim
Jan 13 '06 #7

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

5
by: matt melton | last post by:
Hi there, I am trying to write a method that accepts an array of any primitive type and will return the same array without copying memory as an array of bytes. ie. I'd like to be able to do...
4
by: x | last post by:
converting 1944 to '1','9','4','4' how can I convert a number such as 1944 to a character array? thanks!
2
by: Asbjørn Ulsberg | last post by:
Hi. I'm trying to convert Brady Hegberg's great RTF2HTML VB 6.0 module to C#. I've managed to convert the VB code to VB.NET, which gave me the following code: Option Strict On Option...
4
by: Prabhu | last post by:
Hi, We are having problem in converting a byte array to string, The byte array has char(174), char(175), char(240), char(242) and char(247) as delimiters for the message. when we use...
8
by: iyuen | last post by:
I'm having problems with converting a byte array to an image object~ My byte array is an picture in VB6 StdPicture format. I've used propertybag to convert the picture into base64Array format in...
4
by: sal | last post by:
Greets, All Converting array formula to work with datatables/dataset tia sal I finally completed a formula I was working on, see working code below. I would like to change this code so it...
8
by: moondaddy | last post by:
I need to convert a byte array to a string and pass it as a parameter in a URL and then convert it back to the original byte array. However, its getting scrambled in the conversion. In short,...
2
by: XML newbie: Urgent pls help! | last post by:
Does anyone have a snippet of code that will convert a string to a long array? I've nearly smashed my head against the wall trying to figure this out. I'm Using vb.net 2005 Pls reply asap. I...
4
by: gg9h0st | last post by:
i'm a newbie studying php. i was into array part on tutorial and it says i'll get an array having keys that from member variable's name by converting an object to array. i guessed "i can...
2
by: Brian Parker | last post by:
I am beginning to work with VB2005.NET and I'm getting some problems with string formatting converting an application from VB6. VB6 code:- sTradeDate = Format(pArray(4,i Record), "mmddyy") ...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.