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