对目录中的所有文件的标点符号拆分文本

对目录中的所有文件的标点符号拆分文本

我需要帮助。我在这个网站上找到了关于从目录中读取所有文件的代码。但是这个代码没有用标点符号将文本分成单词。你能详细说明一下吗?

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.

答案1

根据Abhijit 的回答在 stackoverflow 上的相关问题上,可以使用模块punctuation中的类string并将其用作re.sub()函数内的模式。

glob模块不是特别必要的,因为您可以利用命令行上的全局功能,并稍微缩短代码。

#!/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 

相关内容