FAQ

On 13/12/2013 09:43, Peter Otten wrote:
Shyam Parimal Katti wrote:
Hello,

I have a list of sql queries, some which are split across multiple list
elements e.x.
['drop table sample_table;', 'create table sample_test', '(col1 int);',
'select col1 from', ' sample_test;']

A semi-colon in the string value indicates the termination of a sql
query. So the expected out come is a conversion to a list of valid sql
queries:
['drop table sample_table;', 'create table sample_test (col1 int);',
'select col1 from sample_test;']

Here is the code that does that:

sample = ['drop table sample_table;', 'create table sample_test', '(col1
int);', 'select col1 from', ' sample_test;']
pure_sqls = []
query_holder= ''
for each_line in sample:
query_holder += each_line
if query_holder.endswith(';'):
pure_sqls.append(query_holder)
query_holder = ''


Is there a way to do this by eliminating explicit creation of new
list(pure_sqls) and a temporary variable(query_holder)? Using list
comprehension? Though I don't want to put the shorter version in
production(if it is difficult to understand), I am looking if this can be
done with list comprehension since I am trying to learn list comprehension
by using it in such scenarios.
Yours is the sane approach, but it may be fun to try to understand the
following evil hacks ;)
[sql.replace("\0", " ") + ";" for sql in "\0".join(sample +
[""]).split(";\0") if sql]
['drop table sample_table;', 'create table sample_test (col1 int);', 'select
col1 from sample_test;']

from itertools import groupby
def key(x, group=[0]):
... try:
... return group[0]
... finally:
... group[0] += x.endswith(";")
...
[" ".join(group) for _, group in groupby(sample, key)]
['drop table sample_table;', 'create table sample_test (col1 int);', 'select
col1 from sample_test;']

Evil? Bring back the death penalty for code like the above, that's what
I say :)


--
My fellow Pythonistas, ask not what our language can do for you, ask
what you can do for our language.


Mark Lawrence

Search Discussions

Discussion Posts

Previous

Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 7 of 7 | next ›
Discussion Overview
grouppython-list @
categoriespython
postedDec 12, '13 at 8:40p
activeDec 13, '13 at 10:07a
posts7
users5
websitepython.org

People

Translate

site design / logo © 2022 Grokbase