我是python的新手,我正在尝试找到alice_in_worderland.txt中最大的单词。我想我有一个很好的系统设置("见下文"),但我的输出正在返回一个"字"用破折号连接多个单词。有没有办法删除文件输入中的破折号?对于文本文件,请访问here
来自文本文件的示例:
非常重要,'国王说,转向陪审团。他们是 刚刚开始在他们的石板上写下这个,当白色 兔子被打断:非常重要,陛下的意思当然是'他 他以一种非常尊重的语气说,但皱着眉头,对他说话 他说话的时候。 "当然,重要的是,我的意思是,'国王匆匆忙忙 说,然后继续自言自语,重要 - 不重要 - 不重要 - 重要 - '好像他在试着说出哪个词 。最好的"
代码:
#String input
with open("alice_in_wonderland.txt", "r") as myfile:
string=myfile.read().replace('\n','')
#initialize list
my_list = []
#Split words into list
for word in string.split(' '):
my_list.append(word)
#initialize list
uniqueWords = []
#Fill in new list with unique words to shorten final printout
for i in my_list:
if not i in uniqueWords:
uniqueWords.append(i)
#Legnth of longest word
count = 0
#Longest word place holder
longest = []
for word in uniqueWords:
if len(word)>count:
longest = word
count = len(longest)
print longest
答案 0 :(得分:3)
>>> import nltk # pip install nltk
>>> nltk.download('gutenberg')
>>> words = nltk.corpus.gutenberg.words('carroll-alice.txt')
>>> max(words, key=len) # find the longest word
'disappointment'
答案 1 :(得分:2)
以下是使用re
和mmap
的一种方式:
import re
import mmap
with open('your alice in wonderland file') as fin:
mf = mmap.mmap(fin.fileno(), 0, access=mmap.ACCESS_READ)
words = re.finditer('\w+', mf)
print max((word.group() for word in words), key=len)
# disappointment
比将文件加载到物理内存更有效。
答案 2 :(得分:0)
使用str.replace
用空格(或任何你想要的)替换短划线。要做到这一点,只需在第3行第一次调用后添加另一个要替换的调用:
string=myfile.read().replace('\n','').replace('-', ' ')