2013-09-20 3 views
0

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

Для каждой строки файла, которую я читаю, я хочу получить n-ое слово в строке, сохранить это и напечатать на одной строке.

У меня есть следующий код:

import os 

p = './output.txt' 

word_line = ' ' 

myfile = open(p, 'r') 
for words in myfile.readlines()[1:]: # I remove the first line because I don't want it 
    current_word = words.strip().split(' ')[4] 
    word_line += current_word 
    print word_line 
myfile.close() 

файл он читает, выглядит следующим образом:

1 abc-abc.abc (1235456) [AS100] bla 123 etc 
2 abc-abc.abc (1235456) [AS10] bla 123 etc 
3 abc-abc.abc (1235456) [AS1] bla 123 etc 
4 abc-abc.abc (1235456) [AS56] bla 123 etc 
5 abc-abc.abc (1235456) [AS8] bla 123 etc 
6 abc-abc.abc (1235456) [AS200] bla 123 etc 
etc 

Мой текущий код выводит следующее:

[AS100][AS10][AS1][AS56][AS8][AS200] 

Только проблема, он не всегда фиксируется как 4-е значение строки, так как иногда он отображается как 5-й и т. д. или вообще отсутствует.

Я в настоящее время опробовать:

if re.match("[AS", words): 
    f_word = re.match(".*[(.*)",words) 

Это не работает, я пытаюсь увидеть, если в текущей строке он находит открытое «[» Если это делает, чтобы отобразить содержимое . его до закрытия «] Переходит к новой линии и продолжать делать это

в конечном счете имеет следующий желаемый результат:..

AS100 AS10 AS1 AS56 AS8 AS200 

я мог бы реально использовать некоторые рекомендации по этому вопросу спасибо

EDIT:

m = re.search(r'\[AS(.*?)]', words) 
if m: 
    f_word += ' ' + m.group(1) 

Благодаря

+0

В питоне, извините – Chino

ответ

1

[ специальный символ в регулярных выражениях и обозначает начало символьного класса. Побег.

m = re.search(r'\[AS(.*?)]', words) 
if m: 
    f_word = m.group(1) 
+0

f_word делает это магазин до всего найденного значение, оно сцепить найденное значение в конце так, чтобы он соответствовал выходному я указал выше? Когда я ввожу это в свой скрипт с циклом, он не отображает все найденные в одной строке. Я делаю что-то неправильно? Спасибо за ответ – Chino

+0

А, f_word + = m.group (1) выполнил эту работу для меня. Огромное спасибо. – Chino

+0

Формат не прав, хотя он добавляет все без пробелов. – Chino

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