Python分析文本和使用正则表达式提取

时间:2014-02-20 11:24:44

标签: python regex list match

如果你可以帮助一个python初学者,那就太好了,那就是阅读!

我想分析一个像这样格式化的文本文档,并且有大量这样的行:

000001  A040C015_130223_R1WV             V     C        11:37:48:22 11:38:29:18 10:00:53:00 10:01:33:20
每个字符串之间的

都有空格。 所以我做了以下事情:

    #writing data into list
datalist = []
filedata = open(inputfile, 'r')
for line in filedata:
    line = line.strip('\n\t\r')
    datalist.append(line)

filedata.close()

#splitting up List by whitespace and creating new List
newList = []
for i in datalist:
    newList.append(i.split(' '))


print newList[0:]

#parsing list with regex
regCompiled = re.compile('^[A-Z][0-9]{3,3}[C][0-9]{3,3}[_][0-9]{6,6}[_][A-Z][0-9]{2,2}[A-Z].*');

for content in newList:
    checkMatch = re.match(regCompiled, content);    
    if checkMatch:
        print ("Found:"), content
    else:
        print ("NO Match")

我遇到的第一个问题是,它似乎使每一行都有一个带有空('')项的列表 对于拆分后的每个空格,然后由于拆分功能,它似乎是列表中的列表。

我试过

filter(None, newList)

但由于空项目,('')项目仍然存在并且正则表达式出错。 毕竟我只想提取包含A040C015_etc的字符串。

完整的文本列表在这里: Link to full Text Document

非常感谢您的帮助...... 赖

1 个答案:

答案 0 :(得分:1)

尝试使用split()代替split(" ")。应该照顾额外的空间:

>>> i = "x  X"
>>> i.split()
['x', 'X']
>>> i.split(" ")
['x', '', 'X']