Как отфильтровать все слова, которые содержат N или более символов? - PullRequest
0 голосов
/ 03 января 2011

Я хотел бы обработать текстовый файл, чтобы найти все слова, которые содержат более N символов. Любое решение в Bash (grep, awk) или Python (re) приветствуется! Тем не менее, самый короткий вариант предпочтительнее.

Ответы [ 12 ]

0 голосов
/ 03 января 2011

Для полноты (хотя в этом случае, вероятно, лучше использовать регулярное выражение):

>>> from string import punctuation
>>> with open('foreword.rst', 'rt') as infile:
...    for line in infile:
...       for x in line.split():
...           x = x.strip(punctuation)
...           if len(x) > 5:
...              print x

Если вы действительно имеете в виду «фильтр», то есть каждое слово должно быть напечатано несколько раз. Если вам просто нужны слова по одному разу, я бы сделал это:

>>> from string import punctuation
>>> result = set()
>>> with open('foreword.rst', 'rt') as infile:
...    for line in infile:
...       for x in line.split():
...           x = x.strip(punctuation)
...           if len(x) > 5:
...              if x not in result:
...                  result.add(x)
...                  print x
0 голосов
/ 03 января 2011

попробуйте это:

N = 5 #Threshold
f = open('test.txt','r')
try:
  for line in f.xreadlines():
    print " ".join([w for w in line.split() if len(w) >= N])
finally:
  f.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...