2014-02-20 2 views
0

Было бы здорово, если бы вы могли помочь начинающему питону, THX для чтения!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") 

Первая проблема у меня есть, что, кажется, она делает для каждой строки списка с пустыми («») элементов для каждого пробела после расщепления, и тогда кажется, что это список в списке из-за функции split.

я попытался с

filter(None, newList) 

но («») элементы остаются и ошибка с регулярным выражением из-за пустых элементов. В конце концов, я хочу извлечь только строки, содержащие A040C015_etc.

Полный Textlist здесь: Link to full Text Document

Большое спасибо за любую помощь ... райнер

+0

Что это регулярное выражение должно найти именно? – WeaselFox

+0

он должен найти именно этот формат строки: A040C015_130223_R1WV – rainer

ответ

1

попробуйте использовать split() вместо split(" "). которые должны позаботиться о дополнительном пространстве:

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

THX много, что сделал трюк, но регулярное выражение работает не так, нужно изучить это сейчас ... – rainer

+0

Ссылка на [документация] (http://docs.python.org /2/library/stdtypes.html#str.split), объясняя это поведение. – Esenti

+0

Вывод списка теперь: ['000001', 'A040C015_130223_R1WV', 'V', 'C', '11: 37: 48: 22 ', '11: 38: 29: 18', '10: 00: 53: 00 ', '10: 01: 33: 20'], [00002, A038C015_130223_R1WV, V, C, , '10: 01: 33: 20 ', '10: 02: 21: 07'] и так далее. Список в списке вещей остается ... – rainer

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