On 13 Jun 2001 07:47:13 -0700, Sebal wrote:
I have a method what from a "MULTIPART FORM" put a file named 'myFile.pdf' in a directory. And after i want the methood to create a Zclass instance[PDFclass] whith id=myFile.
I tried with split, join, and translate method of string module, and I can't get a valid id with split and join ; and with translate if 'myFile' is 'mypdf' (so the file is 'mypdf.pdf') I'll get 'my' as id for my PDFclass instance.
Split on the '.' not on 'pdf'.
Example from the interpreter:
foo="mypdf.pdf" id,extension = string.split(foo,'.') print id mypdf
Bill
This doesn't work: 1>>>mydtml_method.html: <dtml-call "REQUEST.set('filename' , 'test.pdf')" > <dtml-call "REQUEST.set('file_id' , _.string.split(filename,'.'))" > <dtml-var file_id> with view I get ['test','pdf'] 2>>>mydtml_method.html: <dtml-call "REQUEST.set('filename' , 'test.pdf')" > <dtml-call "REQUEST.set('file_id' , _.string.split(filename,'.pdf'))" > <dtml-var file_id> with view I get ['test',''] This make a invalide id for my PDFclass instance. I don't know how to separate the 2 arguments of file_id. Thanx () / \ | <> | (____) zazen rules ... Sbaline _______________________________________________________ Send a cool gift with your E-Card http://www.bluemountain.com/giftcenter/
Sebal wrote:
On 13 Jun 2001 07:47:13 -0700, Sebal wrote:
I have a method what from a "MULTIPART FORM" put a file named 'myFile.pdf' in a directory. And after i want the methood to create a Zclass instance[PDFclass] whith id=myFile.
I tried with split, join, and translate method of string module, and I can't get a valid id with split and join ; and with translate if 'myFile' is 'mypdf' (so the file is 'mypdf.pdf') I'll get 'my' as id for my PDFclass instance.
Split on the '.' not on 'pdf'.
Example from the interpreter: >>> foo="mypdf.pdf" >>> id,extension = string.split(foo,'.')
^^^^^^^^^^^^^ You missed this part -- explained below.
>>> print id mypdf
Bill
This doesn't work: 1>>>mydtml_method.html: <dtml-call "REQUEST.set('filename' , 'test.pdf')" > <dtml-call "REQUEST.set('file_id' , _.string.split(filename,'.'))" > <dtml-var file_id>
with view I get ['test','pdf']
2>>>mydtml_method.html: <dtml-call "REQUEST.set('filename' , 'test.pdf')" > <dtml-call "REQUEST.set('file_id' , _.string.split(filename,'.pdf'))" > <dtml-var file_id>
with view I get ['test','']
This make a invalide id for my PDFclass instance. I don't know how to separate the 2 arguments of file_id.
A quick Python lesson: In Bill's suggestion, this was done by assigning the result to two variables, like so (an example at the python interactive prompt):
foo="mypdf.pdf" id, extension = string.split(foo,'.') id 'mypdf' extension ''
You can do this with any sequence in python:
stuff = (0, 1, 2) a, b, c = stuff
Now a is 0, b is 1, and c is 2. This is called unpacking, and it's a common python technique for assigning the contents of a list to a bunch of variables. However, it only works if you assign to **exactly** as many variables as there are in the sequence. In your situation, if the input does not contain exactly one occurence of ".pdf", you'll get this error:
id, extension = string.split("bob.pdf.pdf", ".pdf") Traceback (most recent call last): File "<stdin>", line 1, in ? ValueError: unpack list of wrong size
id, extension = string.split("bob", ".pdf") Traceback (most recent call last): File "<stdin>", line 1, in ? ValueError: unpack list of wrong size
An error-proof way to deal with it would be to use a subscript to get the first element from the output of split. This works whether split returns a list of one item or of a million. We want to take element 0 from the sequence created by splitting the input.
id = string.split("bob.pdf.spam.pdf", ".pdf")[0] id 'bob'
Now let's put that into your example: <dtml-call "REQUEST.set('filename' , 'test.pdf')" > <dtml-call "REQUEST.set('file_id' , _.string.split(filename,'.pdf')[0])" > <dtml-var file_id>
participants (2)
-
Paul Winkler -
Sebal