gpt4 book ai didi

python - String.strip() 重要性

转载 作者:太空宇宙 更新时间:2023-11-03 14:15:32 25 4
gpt4 key购买 nike

我的任务是编写一个函数,将文件中单词的长度与整数进行比较,然后返回所有符合该大小的单词。我得到的答案几乎相同,除了我没有像他们那样包含 string.strip() :

def get_words(dictfile,size): words = []
for word in open(dictfile).readlines():
word = word.strip() #this is the only bit I didn't have in my own code
if len(word) == size:
words.append(word)
return words

离开 .strip() 真的会改变这个函数的输出,还是在处理文件时放入它只是一个好习惯?

编辑:输入将是一个文件,其中每个单词都是一行,例如

a
abandon
abbey
abdominal

并且大小只是任意整数

最佳答案

def get_number_of_words(filename, size):
words = []
with open(filename) as dictfile:
for line in dictfile:
word = line.strip()
if len(word) == size:
words.append(word)
return words

我用更多“实事求是”的变量名重写了您的函数,以弄清楚发生了什么。说说我替换的一些东西:

  • for word in open(dictfile).readlines():

通过以这种方式匿名打开文件,您已经丢弃了对用于关闭它的文件对象的引用。此外,您还不必要地使用 readlines 将整个文件读入了内存。相反,我更喜欢 with 上下文管理器,它允许您保存对文件句柄的引用(使用 as),并在完成后自动关闭文件,这你疏忽了。 (从技术上讲,Python 最终会为您完成此操作,但这仍然是一个好习惯。)

另请注意,我直接遍历文件for line in dictfile——这比将整个文件预先加载到内存中要高效得多。


关于您的标题问题,如果您希望此函数提供准确的计数,则绝对有必要在此处调用 line.strip()。您迭代的文件中的每一行都包含一个 '\n' 字符(换行符),该字符由 len 计算,因为它是字符串的一部分。如您所见,如果您询问该函数文件中有多少个长度为 4 的单词,它会为您提供所有长度为 3 的单词(第 4 个字符是 '\n' 人类通常不会算)。

关于python - String.strip() 重要性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33685496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com