Разделение текста по пунктуации для всех файлов в каталоге [закрыто]

Мне нужна помощь. Я нашел на этом сайте код о чтении всех файлов из каталога. Но этот код не разделяет текст на слова по пунктуации. Не могли бы вы подробнее рассказать об этом?

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.
0
задан 27 June 2018 в 00:43

2 ответа

На основе ответа 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 
0
ответ дан 29 October 2019 в 01:37

Код, который находится в Вашем примере, мог бы просто распечатать содержание файлов, которые Вы имеете. Если Вы хотите считать файл, и разделить его содержание в определенных символах необходимо использовать метод "разделение ()" для строки, Вы были считаны из файла. Пример:

some_text = "some dummy text, with punctuation, another word" print(some_text.split(','))

Результат:

['some dummy text', ' with punctuation', ' another word']

Надежда это помогает!

0
ответ дан 29 October 2019 в 01:37

Другие вопросы по тегам:

Похожие вопросы: