Is it accurate to say that you are as of now a Python software engineer? Did you read the first “Jump Into Python”? Did you get it on paper? (Provided that this is true, much obliged!) Are you prepared to venture out into Python 3? … If along these lines, read on. (On the off chance that none of that is valid, you’d be in an ideal situation beginning toward the starting.) Python 3 accompanies a content called 2to3. Learn it. Adore it. Utilize it. Porting Code to Python 3 with 2to3 is a reference of the considerable number of things that the 2to3 instrument can settle naturally. Since a great deal of those things are language structure changes, it’s a decent beginning stage to find out about a considerable measure of the punctuation changes in Python 3. (print is now a function, `x` doesn’t work, &c.) Case Study: Porting chardet to Python 3 documents my (ultimately successful) effort to port a non-trivial library from Python 2 to Python 3. It may help you; it may not. There’s a fairly steep learning curve, since you need to kind of understand the library first, so you can understand why it broke and how I fixed it. A lot of the breakage centers around strings. Speaking of which… Strings. Whew. Where to start. Python 2 had “strings” and “Unicode strings.” Python 3 has “bytes” and “strings.” That is, all strings are now Unicode strings, and if you want to deal with a bag of bytes, you use the new bytes type. Python 3 will never implicitly convert between strings and bytes, so if you’re not sure which one you have at any given moment, your code will almost certainly break. Read the Strings chapter for more details.