2016-03-02 3 views
2

В основном я хочу сценарий Python для поиска .txt для любой строки, содержащей,Python поиска файлов .txt для конкретной линии

" #1111. " 

1111 < = любое число от 0-9, поэтому любая возможность 0-9 с 4 чисел, содержащий # в начале и . в конце.

+1

'матчи = [строка для линии в линии, если re.search ("# \\ d {4}.", Строка) не является None]' – zondo

+0

Если вы хотите правильный ответ, иметь трещины на а затем поделиться своим кодом, если вы не можете заставить его работать правильно. – jsfan

+0

@zondo, ваше регулярное выражение имеет ошибку. вы дважды сбрасывали косую черту. это должно быть '# \ d {4} .' – Saleem

ответ

3

Вы хотите использовать то, что называется Regular Expression.

Python имеет модуль регулярных выражений, называемый re.

import re 

with open('file.txt', 'r') as f: 
    matches = [line for line in f if re.search(r'#\d{4}\.', line)] 
print matches 
+1

Вам не нужно скрывать '#' – Saleem

+1

Кроме того, _always_ использует необработанные строки для регулярных выражений (я не могу сказать это слишком много раз), и не надо называть '.readlines()' (что просто заставляет slurp всех линии перед фильтрацией, увеличивая пиковое использование памяти резко, когда просто выполнение 'for line in f' тянет строки лениво по требованию, улучшает способность ОС к прецеденту и уменьшает использование пиковой памяти в соответствии с количеством совпадений, а не суммой количество строк. Наконец, открытие файла в двоичном режиме кажется немного странным: мы обрабатываем текст здесь, поэтому читаем его как таковой. – ShadowRanger

+0

@ShadowRanger хорошая точка. – Saleem

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