“Should I use Python 2 or Python 3?”
This is a very common question when someone wants to learn Python. Here is a nice article about this topic: http://wiki.python.org/moin/Python2orPython3.
(Thanks Jaume for the link.)
If you are ready to dive in Python 3, here are some tutorials:
- The official Python 3 tutorial (HTML, PDF)
- Further Python 3 docs (c-api.pdf, distutils.pdf, documenting.pdf, extending.pdf, faq.pdf, howto-advocacy.pdf, howto-cporting.pdf, howto-curses.pdf, howto-descriptor.pdf, howto-doanddont.pdf, howto-functional.pdf, howto-logging-cookbook.pdf, howto-logging.pdf, howto-pyporting.pdf, howto-regex.pdf, howto-sockets.pdf, howto-sorting.pdf, howto-unicode.pdf, howto-urllib2.pdf, howto-webservers.pdf, install.pdf, library.pdf, reference.pdf, tutorial.pdf, using.pdf, whatsnew.pdf)
- Dive Into Python 3 (HTML and PDF)
I follow the following simple guideline: I use that version of Python that comes with Ubuntu by default. In Ubuntu 10.10 it was Python 2.6, in Ubuntu 11.04 it’s Python 2.7. When they switch to Python 3.x, I will switch too.
We have a page that redirects to another page. How to figure out where the redirection points to?
import urllib s = "https://pythonadventures.wordpress.com?random" # returns a random post page = urllib.urlopen(s) print page.geturl() # e.g. http:// pythonadventures.wordpress.com/2010/10/08/python-challenge-1/
I found it in this thread.
>>> import requests >>> r = requests.get('https://pythonadventures.wordpress.com?random') >>> r.url u'https://pythonadventures.wordpress.com/2010/09/30/create-import-module/'
Here is a mini cheat sheet for reading and writing a text file.
Read a text file line by line and write each line to another file (copy):
f1 = open('./in.txt', 'r') to = open('./out.txt', 'w') for line in f1: to.write(line) f1.close() to.close()
text = f.read() # read the entire file line = f.readline() # read one line at a time lineList = f.readlines() # read the entire file as a list of lines
I had the following unicode string: “Kellemes Ünnepeket!” that I wanted to simplify to this: “Kellemes Unnepeket!”, that is strip “Ü” to “U”. Furthermore, most of the strings were normal ascii, only some of them were in unicode.
import unicodedata title = ... # get the string somehow try: # if the title is a unicode string, normalize it title = unicodedata.normalize('NFKD', title).encode('ascii','ignore') except TypeError: # if it was not a unicode string => OK, do nothing pass
I used the following resources:
You want to interact with a MySQL database from your Python script.
First of all, you need to install the following package:
sudo apt-get install python-mysqldb
Then try the following basic script to check if everything is OK:
#!/usr/bin/env python import MySQLdb conn = MySQLdb.connect (host = "localhost", user = "testuser", passwd = "testpass", db = "test") cursor = conn.cursor () cursor.execute ("SELECT VERSION()") row = cursor.fetchone () print "server version: ", row cursor.close () conn.close ()
We have a .csv file with two columns: symbol and name. Iterate through the lines and insert each line in a database table as a record.
#!/usr/bin/env python import MySQLdb f1 = open('./NYSE.csv', 'r') # A line looks like this: # ZLC; Zale Corporation conn = MySQLdb.connect(host = "localhost", user = "user", passwd = "passwd", db = "table") cursor = conn.cursor() for line in f1: pieces = map(str.strip, line.split(';')) #print "'%s' => '%s'" % (pieces, pieces) query = "INSERT INTO symbol_name (symbol, name) VALUES (\"%s\", \"%s\")" % (pieces, pieces) #print query cursor.execute(query) f1.close() conn.commit() cursor.close () conn.close ()
There are lots of Python-MySQL tutorials on the net. Let’s see some of them:
I scanned in
66 pages that are numbered from
76. However, the scanning software saved the files under the names
Scan10097.JPG. I want to rename them to reflect the real numbering of the pages, i.e.
#!/usr/bin/env python import glob import re import os files = glob.glob('*.JPG') # get *.JPG in a list (not sorted!) files.sort() # sort the list _in place_ cnt = 11 # start new names with 11.jpg for f in files: original = f # save the original file name result = re.search(r'Scan(\d+)\.JPG', f) # pattern to match if result: # Is there a match? new_name = str(cnt) + '.jpg' # create the new name print "%s => %s" % (original, new_name) # verify if it's OK # os.rename(original, new_name) # then uncomment to rename cnt += 1 # increment the counter
Comments are inside the source code.
If you need a simpler rename (like removing a part of the file names), you can also use the
rename command. In this post I give an example for that.
We are sad to inform you that Fluffy, the world’s longest snake living in captivity, has died. 18-years-old and weighing 300-pounds Fluffy held the title of longest snake by Guinness World Records and was a hit attraction at Columbus Zoo.
Find more info here.