Re: Генерация индексов для проекта lindocs.
Теперь пришла очередь Python.
Для начала создадим скрипт, который принимает со стандартного ввода
(stdin) строки с ключевыми словами и выводит их каждое слово в одну
строчку.
begin on_stat.py #!/usr/bin/python
# -*- coding: KOI8-R -*-
from sys import stdin
def main():
while 1:
line = stdin.readline()
if not line:
break
keywords = line.split()
for i in range(len(keywords)):
print keywords[i]
if __name__ == "__main__":
main()
end on_stat.py Пробежимся по тексту программы.
stdin.readline() - читает из стандартного ввода одну строку, если строка
пустая (не путать со строкой, заканчивающейся на "\n"), то данных на
стандартном вводе больше нет, поэтому цикл завершится в следующей
строке-условии.
line.split() - вызывается метод для объекта-строки "line". Метод считает
строку списком слов, разделенных стандартным разделителем - строка из
символов пробела (пробел, табуляция, новая строка, возврат, прогон
страницы). В результате формируется объект-список.
len(keywords) - вычисляем количество элементов в списке
range(len(keywords)) - создает список, содержащий арифметическую
прогрессию от 0 до длины списка keywords. Цикл "for" извлекает
поочередно элементы этого списка, которые затем используются для
обращения к каждому элементу списка. Поэтому если бы задача сводилась
просто к печати содержимого списка keywords, то цикл выглядел бы иначе:
for i in keywords:
print i
Чтобы посмотреть, что делает скрипт наш первоначальный конвейер нужно
удлинить:
$ find . -name "*.txt" -exec head -n 1 '{}' ';' | sed 's/\x0D//' | \
awk '/Keywords: [ a-z]/ {print}' | \
sed 's/Keywords: //' | sed 's/^ //' | sed 's/ $//' \
./on_stat.py