views:

182

answers:

3

Hi, new here! I'm a beginner in Python, and I've been looking through the Python Cookbook (2nd Edition) to learn how to process strings and characters.

I wanted to try converting a number into its Unicode equivalent. So I tried using the built-in function called 'unichr', which, according to the Cookbook, goes something like:

>>> print repr(unichr(8224))

... and will output:

u'\u2020'

However, the code failed. I thought it had something to do with print (because Python 3 uses print() instead of print ""), but that didn't work out as well. I tried several variations to the code, and it still failed. At long last, I just typed a simple line:

unichr(10000)

To my surprise, this error message kept popping up, no matter what value I put into the above function:

 NameError: name 'unichr' is not defined

What could be the problem? Is there some specific module that I'm supposed to import?

+3  A: 

In Python 3, you just use chr:

>>> chr(10000)
'✐'
Mark Byers
+1  A: 

Python 3.x doesn't have a special Unicode string type/class. Every string is a Unicode string. So... I'd try chr. Should give you what unichr did pre-3.x. Can't test, sadly.

jae
+1  A: 

In Python 3, there's no difference between unicode and normal strings anymore. Only between unicode strings and binary data. So the developers finally removed the unichr function in favor of a common chr which now does what the old unichr did. See the documentation here.

AndiDog
Thank you. I tried posting a related question in this comment area, but it won't fill properly, so I've posted it below. (I hope I didn't run afoul of the site rules by doing so.)
anonnoir
There are still two string-ish types. What 2.x calls `unicode`, 3.x calls `str` (with trivial changes). What 2.x calls `str`, 3.x calls `bytes` (with moderate changes).
Mike Graham