在Python中将文本文件转换为字符串

0 投票
3 回答
12999 浏览
提问于 2025-04-18 17:32

我刚开始学习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

这里有一种方法,使用了 remmap

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'

撰写回答