在Python中将文本文件转换为字符串
我刚开始学习Python,想在alice_in_wonderland.txt这个文件中找到最长的单词。我觉得我已经有了一个不错的系统(“见下文”),但是我的输出结果返回了一个“单词”,里面有连字符把多个单词连接在一起。有没有办法在读取文件时去掉这些连字符呢?如果想查看这个文本文件,可以点击这里
文本文件中的示例:
“这非常重要,”国王说,转向陪审团。他们刚开始在黑板上写下这些内容,这时白兔打断了他们:“不重要,陛下的意思当然是,”他用非常尊重的语气说,但在说话时却皱着眉头,做着鬼脸。“不重要,当然,我是这么说的,”国王急忙说,然后自言自语,低声说道:“重要——不重要——不重要——重要——”就好像他在试着找出哪个词听起来最好。”
代码:
#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
3 个回答
0
使用 str.replace
方法可以把字符串中的短横线替换成空格(或者你想要的其他字符)。要做到这一点,只需要在第3行的第一次替换之后,再加一次替换的调用就可以了:
string=myfile.read().replace('\n','').replace('-', ' ')
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
这种方法比把文件加载到物理内存中要高效得多。
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'