Привет. Вот рабочий вариант вашего примера. У меня openSUSE 10.3 и некоторые буквы русск. алфавита - р, т, ф -
крякозябрят. Буду разбираться. А в латинской транскрипции все работает. Не судите строго, это моя первая
программка по регуляркам: :)
#!/usr/bin/python
# coding: koi8-r
import re
patt_data=r"..-..-....."
patt_time=r"..:..."
patt_1=r"1\)[A-z]+," # дпя русской - ur"1\)[А-я]+,"
patt_9=r"9\)[A-z]+,"
patt_1_8=r"[1-8]\)"
patt_10=r"10\)[A-z]+ [A-z]+ [A-z]+,"
patt_11=r"11\)[A-z]+,"
patt_12=r"12\)[0-9].[0-9],"
file1=open("file_in","r+")
file2=open("file_out","w+")
while 1:
string1=file1.readline()
if not string1:
break
else:
string2=file1.readline()
sub_data=re.findall(patt_data,string1)[0] # data+time
sub_time=re.findall(patt_time,string2)[0]
substr=sub_data+sub_time
string_result= re.sub(patt_data, substr, string1)
sub_1=re.findall(patt_1,string1)[0] # 1) + 9)
sub_9=re.findall(patt_9,string2)[0]
substr=sub_1[2:]+sub_9[2:]
string_result= re.sub(patt_1, substr, string_result)
string_result=re.sub(patt_1_8, "" ,string_result) # удаление 2)...8)
sub_10=re.findall(patt_10,string2)[0] # + 10)...+12)
sub_11=re.findall(patt_11,string2)[0]
sub_12=re.findall(patt_12,string2)[0]
string_result += sub_10[3:]+sub_11[3:]+sub_12[3:]
string_result=string_result.replace("\n","") # удаление \n
string_result=string_result.replace("\\n","")
string_result += "\\n"+"\n" # добавление \n
print string_result
file2.write(string_result)
file1.close()
file2.close()
01-09-2008,1)Sidorov,2)14.05.1996,3)user@host.com,4)120.60,5)net,6)Ushakova,7)26,8)15,\n
15:20,9)Ivan,10)dopolnitelnaia text inform,11)ocenka,12)7.8,\n
01-09-2008,1)Kuznecova,2)27.02.1996,3)user2@host.com,4)115.10,5)net,6)Voroshilova,7)4,8)102,\n
15:40,9)Maria,10)dopolnitelnaia text inform,11)ocenka,12)8.1,\
01-09-2008,15:20,Sidorov,Ivan,14.05.1996,user@host.com,120.60,net,Ushakova,26,15,dopolnitelnaia text inform,ocenka,7.8,\n
01-09-2008,15:40,Kuznecova,Maria,27.02.1996,user2@host.com,115.10,net,Voroshilova,4,102,dopolnitelnaia text inform,ocenka,8.1,\n