首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于regular_expression的问题

关于regular_expression的问题
EN

Stack Overflow用户
提问于 2015-10-15 08:12:40
回答 1查看 74关注 0票数 0

我编写了一个脚本,如果行与特定模式匹配,则打开多个文本文件。在此之后,我想将这一行与我的国家模式(其中包含国名)和(目前)打印这个国家进行比较。

(稍后我将尝试创建一个方法,它将根据每个文本文件的国家将其移动到文件夹中)

基本上,每个文本文件都包含行:

代码语言:javascript
复制
25/02/2015|11:06:21|MYS|MYS14_FRC6-7_MY1_AA1_WP|MMS1|WXP2632|ashraf|true|120|0|false|

如您所见,此示例包含国家名称"MYS“。

代码语言:javascript
复制
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'

不幸的是,我得到了这个错误:

代码语言:javascript
复制
  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

我不知道如何解决这个错误。我是不是错过了模式上的东西?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-15 08:14:51

您刚才在regex中省略了一个括号:

代码语言:javascript
复制
pattern = r'(\d+)/(\d+)/(\d+)|(\d+):(\d+):(\d+)|(\S+)|(\S+)|(\S+|(\S+)|(\S+)|(\S+)|(\d+)|(\d+)|(\S+)|'
                                                               ^
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33143246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档