String parsing with multiple delimeters
You can use Regular Expressions with re module. For example the following regular expression works with binary strings and Unicode string (I'm not sure which version of Python you use).

For Python 2.7.3:

&gt;&gt;&gt; s = "龍舟 龙舟 [long2 zhou1] /dragon boat/imperial boat/\n"
&gt;&gt;&gt; u = s.decode("utf-8")
&gt;&gt;&gt; import re
&gt;&gt;&gt; re.match(r"^([^ ]+) ([^ ]+) \[([^]]+)\] (.+)", s).groups()
('\xe9\xbe\x8d\xe8\x88\x9f', '\xe9\xbe\x99\xe8\x88\x9f', 'long2 zhou1', '/dragon boat/imperial boat/')
&gt;&gt;&gt; re.match(r"^([^ ]+) ([^ ]+) \[([^]]+)\] (.+)", u).groups()
(u'\u9f8d\u821f', u'\u9f99\u821f', u'long2 zhou1', u'/dragon boat/imperial boat/')


For Python 3.2.3:

&gt;&gt;&gt; s = "龍舟 龙舟 [long2 zhou1] /dragon boat/imperial boat/\n"
&gt;&gt;&gt; b = s.encode("utf-8")
&gt;&gt;&gt; import re
&gt;&gt;&gt; re.match(r"^([^ ]+) ([^ ]+) \[([^]]+)\] (.+)", s).groups()
('龍舟', '龙舟', 'long2 zhou1', '/dragon boat/imperial boat/')
&gt;&gt;&gt; re.match(br"^([^ ]+) ([^ ]+) \[([^]]+)\] (.+)", b).groups()
(b'\xe9\xbe\x8d\xe8\x88\x9f', b'\xe9\xbe\x99\xe8\x88\x9f', b'long2 zhou1', b'/dragon boat/imperial boat/')