如何在不删除白色的情况下从文本文件中删除停用词 space
How to remove the stop words from text file without removing white space
我必须从包含 5 万条推文的文本文件中删除停用词。当我 运行 这段代码时,它成功地删除了停用词,但同时它也删除了白色 space。我要文中白色space
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
import codecs
import nltk
stopset = set(stopwords.words('english'))
writeFile = codecs.open("outputfile", "w", encoding='utf-8')
with codecs.open("inputfile", "r", encoding='utf-8') as f:
line = f.read()
tokens = nltk.word_tokenize(line)
tokens = [w for w in tokens if not w in stopset]
for token in tokens:
writeFile.write(token)
当你写的时候,在你想要空白的地方写空白。在您的具体情况下,每个标记后的换行符似乎是合适的,因为您已经杀死了所有其他格式。使用 print
而不是 write
可以做到这一点,而无需您使用明确的换行符进行标记:
from __future__ import print_function # if you're on Python 2
# ...
for token in tokens:
print(token, file=writeFile)
或者,如果您想要空格而不是换行符,请放置空格。
如果您的代币数量有限,您可以
print(' '.join(tokens), file=writeFile)
但这会占用大量内存以在打印前将字符串连接在一起,因此对标记进行循环会更经济。但是因为您一次处理一行,加入可能就足够了,并且可以让您从一个输入行中的标记一起在一个输出行上。
如果每行有大量标记,并希望循环遍历它们以提高内存效率,一个常见的习惯用法是声明一个最初为空的分隔符:
sep = ''
for token in tokens:
writeFile.write('{}{}'.format(sep, token)) # str.format(): py >= 2.6
sep=' '
writeFile.write('\n')
我必须从包含 5 万条推文的文本文件中删除停用词。当我 运行 这段代码时,它成功地删除了停用词,但同时它也删除了白色 space。我要文中白色space
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
import codecs
import nltk
stopset = set(stopwords.words('english'))
writeFile = codecs.open("outputfile", "w", encoding='utf-8')
with codecs.open("inputfile", "r", encoding='utf-8') as f:
line = f.read()
tokens = nltk.word_tokenize(line)
tokens = [w for w in tokens if not w in stopset]
for token in tokens:
writeFile.write(token)
当你写的时候,在你想要空白的地方写空白。在您的具体情况下,每个标记后的换行符似乎是合适的,因为您已经杀死了所有其他格式。使用 print
而不是 write
可以做到这一点,而无需您使用明确的换行符进行标记:
from __future__ import print_function # if you're on Python 2
# ...
for token in tokens:
print(token, file=writeFile)
或者,如果您想要空格而不是换行符,请放置空格。 如果您的代币数量有限,您可以
print(' '.join(tokens), file=writeFile)
但这会占用大量内存以在打印前将字符串连接在一起,因此对标记进行循环会更经济。但是因为您一次处理一行,加入可能就足够了,并且可以让您从一个输入行中的标记一起在一个输出行上。
如果每行有大量标记,并希望循环遍历它们以提高内存效率,一个常见的习惯用法是声明一个最初为空的分隔符:
sep = ''
for token in tokens:
writeFile.write('{}{}'.format(sep, token)) # str.format(): py >= 2.6
sep=' '
writeFile.write('\n')