How to check is something is a list or a dictionary or a string?
Ken Starks
straton at lampsacos.demon.co.uk
Sat Aug 30 08:28:13 EDT 2008
josh logan wrote:
> But this changes with Python 3, right?
>
right!
see
http://docs.python.org/dev/3.0/whatsnew/3.0.html
(quote)
Strings and Bytes
* There is only one string type; its name is str but its behavior
and implementation are like unicode in 2.x.
* The basestring superclass has been removed. The 2to3 tool
replaces every occurrence of basestring with str.
* PEP 3137: There is a new type, bytes, to represent binary data
(and encoded text, which is treated as binary data until you decide to
decode it). The str and bytes types cannot be mixed; you must always
explicitly convert between them, using the str.encode() (str -> bytes)
or bytes.decode() (bytes -> str) methods.
* All backslashes in raw strings are interpreted literally. This
means that Unicode escapes are not treated specially.
* PEP 3112: Bytes literals, e.g. b"abc", create bytes instances.
* PEP 3120: UTF-8 default source encoding.
* PEP 3131: Non-ASCII identifiers. (However, the standard library
remains ASCII-only with the exception of contributor names in comments.)
* PEP 3116: New I/O Implementation. The API is nearly 100%
backwards compatible, but completely reimplemented (currently mostly in
Python). Also, binary files use bytes instead of strings.
* The StringIO and cStringIO modules are gone. Instead, import
io.StringIO or io.BytesIO.
* '\U' and '\u' escapes in raw strings are not treated specially.
> On Aug 30, 7:15 am, Ken Starks <stra... at lampsacos.demon.co.uk> wrote:
>> George Sakkis wrote:
>>> On Aug 29, 12:16 pm, dudeja.ra... at gmail.com wrote:
>>>> Hi,
>>>> How to check if something is a list or a dictionary or just a string?
>>>> Eg:
>>>> for item in self.__libVerDict.itervalues():
>>>> self.cbAnalysisLibVersion(END, item)
>>>> where __libVerDict is a dictionary that holds values as strings or
>>>> lists. So now, when I iterate this dictionary I want to check whether
>>>> the item is a list or just a string?
>>> if isinstance(item,basestring):
>>> # it's a string
>>> ...
>>> else: # it should be a list
>>> # typically you don't have to check it explicitly;
>>> # even if it's not a list, it will raise an exception later anyway
>>> if you call a list-specific method
>>> HTH,
>>> George
>> For a bit more explanation see, for example,
>>
>> http://evanjones.ca/python-utf8.html
>>
>> (Quote)
>> Working With Unicode Strings
>>
>> Thankfully, everything in Python is supposed to treat Unicode strings
>> identically to byte strings. However, you need to be careful in your own
>> code when testing to see if an object is a string. Do not do this:
>>
>> if isinstance( s, str ): # BAD: Not true for Unicode strings!
>>
>> Instead, use the generic string base class, basestring:
>>
>> if isinstance( s, basestring ): # True for both Unicode and byte strings
>
More information about the Python-list
mailing list