Вот вам некий пример кода. Вашего, но модифицированного немного.
1 #!/usr/bin/env python
2 #-*- coding: koi8-r -*-
3 # эта вторая (или возможно первая) строчка обязательна. Нужно подсказать Питону,
4 # в какой кодировке вы работате. Даже если это utf-8
5
6 import re
7 inp_file=open('xian2.txt')
8 cur_line=unicode(inp_file.read(),'utf-8')
9 # не смотря на то что переменная нахывается cur_line
10 # считывается весь файл. Для одной строки нужно использовать readline(), но Вам виднее
11
12 rxFndSpAndSym=re.compile("\s\w",re.U)
13 # Здесь надо быть внимательным, т.к. \w в юникоде работет похитрее
14 #When the LOCALE and UNICODE flags are not specified, matches any alphanumeric
15 #character and the underscore; this is equivalent to the set [a-zA-Z0-9_].
16 #With LOCALE, it will match the set [0-9_] plus whatever characters are defined
17 #as alphanumeric for the current locale. If UNICODE is set, this will match the
18 #characters [0-9_] plus whatever is classified as alphanumeric in the Unicode
19 #character properties database.
20
21 found=rxFndSpAndSym.search(cur_line)
22 out_line=found.string.encode('utf-8')
23 #вот именно тут и непонятно, что именно Вы хотели
24 # Для того чтоб найти все вхождения, удовлетворяющие вашему регэкспу, стоит написать примерно так
25
26 patResList = re.findall( rxFndSpAndSym, cur_line ) # так получается список всех
27 #непекрывающихся вхожнений (они в юникоде, кстати)
28 print len(patResList)
29 print patResList
30
31 for el in patResList:
32 print "pattern ='%s'" % el
33
34 # ну, допустим теперь нужно записать второе вхождение (если оно было)
35 if len(patResList) > 1:
36 out_file=open('xian3.txt','w')
37 out_file.write(patResList[1]) # он в юникоде
38 out_file.close() # скобки не забывайте здесь
39 else:
40 print 'second pattern hasn\'t been matched'
41
42 raw_input('\n\n\t\tpress Ctrl+Alt+Shift+Insert+F11...')