What is the best way to remove unicode character from  a tuple in Python w/Sqlite?

Posted on 2010-08-21
Last Modified: 2012-05-10
When I execute a select on a sqlite database, the returning data has a u'.  It returns a tuple like ([(u'ATT',), (u'TIER',), (u'TIO',)].  How can I get it into a list like ('ATT',, 'TIER', 'TMO')?
Question by:abuhaneef
LVL 25

Accepted Solution

clockwatcher earned 180 total points
ID: 33494238
The encode() method of a string ( will change the encoding from unicode to ascii.  

Your parens don't match so it's hard to tell what you've really got there.  Assuming the opening paren is something you added it looks like a list of tuples.  If that's the case,

origlist=[(u'ATT',), (u'TIER',), (u'TIO',)]
newlist = []
for tup in origlist:
    newlist = newlist + [item.encode('ascii','backslashreplace') for item in tup]

print newlist

Open in new window

LVL 16

Assisted Solution

gelonida earned 40 total points
ID: 33496027
Please explain exactly what you would like to happen exactly.

Would you like, that all unicode characters not existing with ASCII encoding are replaced by a special character,
that special characters are escaped,  that the characters are removed or that the string will be unreadable, but be saved as it is?

for example to ignore (skip) any unicode character

you had to change clockwatcher' s script from

encode('ascii','backslashreplace') to

backslashreplace is probably what you want though

LVL 28

Expert Comment

ID: 33518352
The u'ATT' does not mean that there is some extra u.  It is only the way how Python tells you that the 'ATT' is a Unicode string.  In other words, all of the 'A', 'T', and 'T' characters are in Unicode.  You probably do not want to remove them.

It could be the case that you want to convert the unicode to ASCII or to some other encoding. Clockwatcher has shown this at the line 4 and gelonida added some notes to that.  The second argument is related to error handling (when conversion of a character cannot be done).

I can also imagine that you may be confused by (whathever, ) -- the trailing comma. It only says (together) with the parenthesis) that the visual representation means representation of a tuple with a single element.

If the tuples contain a single element, the clockwatcher's code could be replaced by one-liner using the list comprehension construct (the clockwatcher's line 4) -- see the last line below.
lst1 = [(u'ATT',), (u'TIER',), (u'TIOX',)]

lst2 = [ t[0] for t in lst1 ]  # without removing the unicode here
print lst2

print [ t[0].encode('ascii', 'backslashreplace') for t in lst1 ]  # with conversion to ASCII

Open in new window


Author Comment

ID: 33519382
Thanks to all.  I actually came up with this:

for row in data:

but I find clockwatcher's to be more acceptable.

LVL 28

Assisted Solution

pepr earned 30 total points
ID: 33519539
Your code may be shortened to the single line below (identical behaviour).  The truth is that the str() built in function returns "informal" string representation of the object.  You are probably right to use the explicit encoding (clockwatcher).  On the other hand, the str() will work also in Python 3, because the str() will is the empty operation with respect to the string type.
li = [ str(row[0]) for row in data ]

Open in new window


Featured Post

Back Up Your Microsoft Windows Server®

Back up all your Microsoft Windows Server – on-premises, in remote locations, in private and hybrid clouds. Your entire Windows Server will be backed up in one easy step with patented, block-level disk imaging. We achieve RTOs (recovery time objectives) as low as 15 seconds.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
python/mysql  table update problem 10 85
Python tuples 2 121
parse convert xml feed to text (python) 2 83
How does this Python sort work? 5 87
This article will show the steps for installing Python on Ubuntu Operating System. I have created a virtual machine with Ubuntu Operating system 8.10 and this installing process also works with upgraded version of Ubuntu OS. For installing Py…
Here I am using Python IDLE(GUI) to write a simple program and save it, so that we can just execute it in future. Because when we write any program and exit from Python then program that we have written will be lost. So for not losing our program we…
Learn the basics of strings in Python: declaration, operations, indices, and slicing. Strings are declared with quotations; for example: s = "string": Strings are immutable.: Strings may be concatenated or multiplied using the addition and multiplic…
Learn the basics of if, else, and elif statements in Python 2.7. Use "if" statements to test a specified condition.: The structure of an if statement is as follows: (CODE) Use "else" statements to allow the execution of an alternative, if the …

777 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question