2015-10-15 4 views
0

Я написал сценарий, который открывает несколько текстовых файлов, если соответствует строке с определенным шаблоном. После этого я хотел бы сравнить эту строку с моей моделью страны (которая содержит названия стран) и (пока) печать этой страны.Проблемы с регулярным выражением

(Позже я попытаюсь создать метод, который будет перемещать каждый текстовый файл в папку на основе его страна)

В основном каждый из текстового файла содержит строки:

25/02/2015|11:06:21|MYS|MYS14_FRC6-7_MY1_AA1_WP|MMS1|WXP2632|ashraf|true|120|0|false| 

Как вы можете видеть это пример содержит название страны "МЫС"

import os 
import string 
import re 
import sys 
import glob 
import fileinput 

country_pattern = 'MYS','IDN','ZAF', 'THA','TWN','SGP', 'NWZ', 'AUS','ALB','AUT','BEL', 'BGR', 'BIH', 'CHE','CZE', 'DEU', 'DNK', 'ESP','EST','SRB','MDK','MNE','BIH', 'BIH','MNE','FIN', 'FRA', 'GBR','GRC', 'HRV', 'HUN', 'IRL', 'ITA', 'LIE', 'LTU', 'LUX', 'LVA', 'MDA', 'SMR','CYP','NLD','NOR','POL','PRT','ROU','SCG', 'SVK','SVN','SWE','TUR','BRA','CAN','USA','MEX','CHL','ARG','RUS' 
pattern = r'(\d+)/(\d+)/(\d+)|(\d+):(\d+):(\d+)|(\S+)|(\S+)|(\S+|(\S+)|(\S+)|(\S+)|(\d+)|(\d+)|(\S+)|' 
src = raw_input("Enter source disk location: ") 
src = os.path.dirname(src) # zwraca sciezke do pliku 
for dir,_,_ in os.walk(src): # odwoluje sie do wielu folderow 
file_path = glob.glob(os.path.join(dir,"*.txt")) # szukam plikow mdi 
print(file_path) 
for file in file_path: 
    f = open(file, 'r') 
    object_name = f.readlines() 
    f.close() 


    for line_name_tmp in object_name: 
     line_name = line_name_tmp.replace('\n','') 
     if line_name == '': 
      line_name.split() 
      continue 
     else: 
      try: 
       re.search(pattern, line_name) 
      except: 
       print line_name 
       pass 

     searchObj = re.search(pattern, line_name) 
     m = searchObj.group(1) 
     if m in coutry_pattern: 
      print "searchObj.group(1) : ", searchObj.group(1) 
     else: 
      print 'did not find any' 

К сожалению, я получаю эту ошибку:

File "<string>", line 254, in run_nodebug 
    File "C:\Users\kostrzew\Desktop\REPORTS\MdiAdmin.py", line 43, in <module> 
    searchObj = re.search(pattern, line_name) # 
    File "C:\Python27\Lib\re.py", line 142, in search 
    return _compile(pattern, flags).search(string) 
    File "C:\Python27\Lib\re.py", line 245, in _compile 
    raise error, v # invalid expression 
    sre_constants.error: unbalanced parenthesis 

Я не знаю, как решить эту ошибку. Я что-то пропустил по шаблону?

ответ

0

Вы только опустить одну закрывающую скобку в своем регулярном выражении:

pattern = r'(\d+)/(\d+)/(\d+)|(\d+):(\d+):(\d+)|(\S+)|(\S+)|(\S+|(\S+)|(\S+)|(\S+)|(\d+)|(\d+)|(\S+)|' 
                  ^
+0

˙U правильно спасибо .... –

Смежные вопросы