Мне нужна помощь. Я нашел на этом сайте код о чтении всех файлов из каталога. Но этот код не разделяет текст на слова по пунктуации. Не могли бы вы подробнее рассказать об этом?
import sys
import glob
import errno
path = '/Users/Юля/Desktop/practice/*.txt'
files = glob.glob(path)
for name in files: # 'file' is a builtin type, 'name' is a less-ambiguous variable name.
try:
with open(name) as f: # No need to specify 'r': this is the default.
sys.stdout.write(f.read())
except IOError as exc:
if exc.errno != errno.EISDIR: # Do not fail if a directory is found, just ignore it.
raise # Propagate other kinds of IOError.
На основе ответа Abhijit по связанному вопросу в stackoverflow, можно использовать punctuation
класс от string
модуль и использование это как шаблон в re.sub()
функция.
glob
модуль не особенно необходим, поскольку можно использовать в своих интересах globing на командной строке и немного сократить код.
#!/usr/bin/env python3
import sys,re
from string import punctuation
for name in sys.argv[1:]:
with open(name) as f:
for line in f:
l = re.sub( '[{}]'.format(punctuation), '\n', line.strip() )
print(l)
С input.txt
файл как это:
Foo, bar !
Baz, foobar.
alpha: beta ?
Сценарий работает так:
$ ./split_words.py input.txt
Foo
bar
Baz
foobar
alpha
beta
Код, который находится в Вашем примере, мог бы просто распечатать содержание файлов, которые Вы имеете. Если Вы хотите считать файл, и разделить его содержание в определенных символах необходимо использовать метод "разделение ()" для строки, Вы были считаны из файла. Пример:
some_text = "some dummy text, with punctuation, another word" print(some_text.split(','))
Результат:
['some dummy text', ' with punctuation', ' another word']
Надежда это помогает!