2015-12-11 7 views
2

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

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

Пример:

Текстовый файл file.txt является:

ali ali ali 
hello world 
hello world 
ali ali ali 

И мой код:

F = open(file.txt, 'r') 

x = F.read() 
y = re.search(r'ali.[\s\w+].', x, re.DOTALL)  

for line in y: 
    print(line) 
+1

Как этот вопрос был upvoted невероятно, она не имеет абсолютно никакого смысла –

ответ

0

Я был в состоянии решить эту проблему самостоятельно. Ответ:

Вы должны изменить next() функцию __iter__ метода, это может быть изменено с помощью этой линии lineiterator = iter(y.splitlines()):

x = F.read() 
y = re.search(r'ali.[\s\w+].', x, re.DOTALL) 

lineiterator = iter(y.splitlines()) 

for line in lineiterator: 
    print(line) 
+2

Так, однако, вот что я подумал: Ваш ответ только код, и внешний вид не работает. Поэтому я думал, что это то, что вы пробовали, но не работает, если это так, тогда вы должны отредактировать свой вопрос, а не публиковать его. ** Но если это действительно ответ, тогда опубликуйте его как правильный ответ **. Но помните, не отправляйте ответ только на код, для других непонятно понимать, что не так и как его решить. Поэтому, пожалуйста, объясните это. Во всяком случае, извините за то, что я думал. –

+0

благодарит за комментарии, исправит это. –

+0

Ах, все в порядке. Теперь давайте поговорим о вашем ответе: 1. 'y = re.search (r'ali. [\ S \ w +]. ', X, re.DOTALL)' вернуть объект ''. Также в '_sre.SRE_Match'' нет метода' .splitlines() '. Вы имеете в виду 'для строки в x.splitlines():' и 'print (re.search (r'ali. [\ S \ w +]. ', Line, re.DOTALL))' или что-то в этом роде? 2. Поскольку 'str.splitlines()' возвращает список, 'iter()' бесполезен здесь. 3. Я все еще мало понимаю ваш вопрос, что вы хотите получить? –

0

Вместо splitlines вы можете использовать метод readlines сразу. Попробуйте

F = open('file.txt','r') 
x = F.readlines() 
for line in x: 
    print line 
+0

Вам не нужен '.readlines()' метод, 'для строки в F: print line' отлично справится ... – gboffi

+0

Спасибо @gboffi! Спасибо за руководство! будет использовать его в будущем! –